Gitlab 読み (5)
積み残しが以下らしい。
- spinach
- sidekiq の関係
- gitlab を fork して travis-ci でなんちゃら
とりあえずスキマ時間で sidekiq 云々を確認するなど。
昨日確認した通り、sidekiq は rake task で start/stop できるようになっている模様。起動処理の記述は以下ですね。
bundle exec sidekiq -q post_receive,mailer,system_hook,common,default \ -e #{Rails.env} -P #{pidfile}
- q で queue を作ってるんですね。queue に突っ込む処理を探してみます。lib/hooks/post-receive というものがありますね。こちらも以前引用してますが再度一部をナニ。
env -i redis-cli rpush "resque:gitlab:queue:post_receive"
あ、この lib/hooks/post-receive ですが git な hook が置かれるディレクトリに導入時にコピィされる形となってますね。doc/install/installation.md の一部を以下に。
## Setup GitLab Hooks sudo cp ./lib/hooks/post-receive /home/git/.gitolite/hooks/common/post-receive sudo chown git:git /home/git/.gitolite/hooks/common/post-receive
で、今ごろになって Project#trigger_post_receive メソドを読みかけていたことを忘却の彼方から取り出してたりするんですが、どこまで云々したんだったか (ぇ
途中まで掘ってスルーしてた
とりあえず以下を掘削してみます。
# Execute web hooks self.execute_hooks(data.dup)
Project#execute_hooks の定義が以下。
def execute_hooks(data) hooks.each { |hook| hook.execute(data) } end
hooks という属性は何か、というと
has_many :hooks, dependent: :destroy, class_name: "ProjectHook"
ProjectHook というクラスですね。app/models/project_hook.rb が以下。
class ProjectHook < WebHook belongs_to :project end
app/models/web_hook.rb に execute なメソドの定義があります。どうも HTTParty という module を include すると云々できる模様。
class WebHook < ActiveRecord::Base include HTTParty
む、post の引数に以下な記述あり。
basic_auth: {username: parsed_url.user, password: parsed_url.password})
これって push 契機で jenkins にお知らせする時に gitlab な plugin 側で何らかの認証な処理をしていたりするのかどうか。別途確認入れます。