JenkinsでGitHubのTagが更新されるのを監視してビルドする

f:id:komeiy:20150107165649p:plain

とあるGitHubで管理しているコードを以下のように更新したのですが、だんだん面倒になってきましてJenkinsさんに一部をお願いすることにしました。

  1. developmentブランチで開発/テスト。Pull Request。
  2. developmentブランチでMerge
  3. masterブランチへマージ
  4. 本番サーバでfetch/merge
  5. テスト
  6. リリース

いざ書くと少し面倒ですね。。。小さいシステムなのでステージングはなしの環境です。

JenkinsとGitHubでどのように自動化するか

GitHubとの連携

  • 「jenkins pull request builder plugin」を使うか悩んだのですが、「GitHub Plugin」を使うことにしました。ステージングがあればDevからのPull Requestを検知して、自動でステージングでテストして結果をBotが通知なんてことも考えたのですが、小規模なのでお手軽さを重視。

  • トリガーはリリース時に付与するバージョンtagを使うこととします。

Jenkinsのジョブをどうするか

新しいtagが付与されたことを確認すると、

  1. developをmasterへマージ
  2. Slaveをサービスアウト
  3. Slaveでfetch/merge
  4. Slaveでテスト
  5. Slaveをサービスイン

以降、masterでも同様の作業を実施

GitHubのTagが更新されるのを監視してビルドする設定

まず、「GitHub Plugin」のインストールをしていいない人は以下を参考に実施してください。

komeiy.hatenablog.com

f:id:komeiy:20150318205420j:plain

Jenkinsで新規Jobを作成して「GitHub Plugin」の設定項目で以下を設定します。

Git Repositories -> 高度な設定 -> Refspec

+refs/tags/*:refs/remotes/origin/tags/*

Git Repositories -> Branches to build

*/tags/*

特定のtagだけでよければBranches to buildにtags/を指定すればOKです。

f:id:komeiy:20150318205258j:plain

ビルド・トリガー → SCMをポーリング

5分間隔の設定例です。

SCMをポーリング
H/5 * * * *

設定は以上です。その他ビルド手順などは各自設定してください。

動作確認

左メニューバーにGitのポーリングログという項目が出てきます。 新しいTagがつけられた場合は、Changes foundを確認できます。

Started on 2015/03/18 23:48:00
Polling SCM changes on master
Using strategy: Default
[poll] Last Built Revision: Revision (refs/tags/v0.6.6)
 > /usr/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repositories
 > /usr/bin/git config remote.origin.url git@github.com:<your-repo>.git # timeout=10
Fetching upstream changes from git@github.com:<your-repo>.git
 > /usr/bin/git --version # timeout=10
using GIT_SSH to set credentials api-gateway deploy key
 > /usr/bin/git fetch --tags --progress git@github.com:<your-repo>.git +refs/tags/*:refs/remotes/origin/tags/*
Polling for changes in
Seen branch in repository origin/develop
Seen branch in repository origin/master
Seen branch in repository origin/tags/v0.6.6
Seen branch in repository origin/tags/v0.6.7
Seen 8 remote branches
 > /usr/bin/git log --full-history --no-abbrev --format=raw -M -m --raw  # timeout=10
Done. Took 2.9 秒
Changes found

シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

開発ツール徹底攻略 (WEB+DB PRESS plus)

開発ツール徹底攻略 (WEB+DB PRESS plus)