まず、Jenkins を叩くスクリプトを ~/git/jenkins.rb などに置きます。
require 'net/http' require 'uri' Net::HTTP.version_1_2 unless ARGV[0] puts 'usage: ruby jenkins.rb [JOB_NAME]' exit 1 end user = "(Jenkins ユーザーID)" api_token = "(ユーザの API トークン。Jenkins の、ユーザ設定ページに載っています)" uri = URI("http://JENKINS_HOST/job/#{ ARGV[0] }/build") # ARGV[0] に job 名が渡ってきます Net::HTTP.start(uri.host, uri.port) do |http| req = Net::HTTP::Get.new(uri.request_uri) req.basic_auth user, api_token res = http.request(req) raise "response code was #{ res.code }" if res.code.to_i >= 400 end
次に、push される git リポジトリの hooks/post-receive ファイルに以下を追記します。
# rbenv 使っている前提で、PATH を通す PATH=$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH ruby ~/git/jenkins.rb (Jenkins ジョブ名)
最後に、hooks/post-receive に実行権限を付与します。
chmod +x hooks/post-receive
以上で、git push すると自動で Jenkins が働くようになります。