ブログ

ryuzeeによるブログ記事。不定期更新

直近開催のScrum Alliance認定スクラムマスター研修のご案内

Jenkinsでビルド・パイプラインを作る

Jenkinsのプラグインでビルド・パイプラインを作ることができるので紹介。 #12月20日のワンクリックデプロイ勉強会の発表のネタバレっぽいのですが。

ビルド・パイプラインとは

ビルド・パイプラインとは、継続インテグレーションのプラクティスの1つで、テスト等を複数の単位に分割し、順番に流していくものである。一般的には継続的インテグレーションを利用していれば、SCMにソースコードをコミットした段階ですぐにユニットテストを走らせ、以降に、静的解析や結合テスト、受け入れテスト、ステージング環境へのデプロイ、本番環境へのデプロイという形で進んでいくことになり、その単位でパイプライン要素を分ける。 当然パイプラインの途中で試験に不合格であれば、その後のプロセスには進めない。

これによって、例えばコミット時には即座にユニットテストレベルの結果を返して開発者のペースを阻害しないようにすることができる。(もちろん後続のテスト結果が失敗であればチームは即座に他の作業をとめてテストが成功するように修正しなければならない)

Jenkinsでビルド・パイプライン

Jenkinsを使ってビルド・パイプラインを作る場合には、ビルドのトリガーをチェーンしていけば良い。 以下の図のようにビルドトリガの設定で他のジョブを指定すれば良いだけだ。 (当然のことながら、パイプラインの先頭については、SCMのポーリングや定期実行等の他のトリガが必要だ)

このケースでの問題は、Jenkinsの画面を見ただけではお互いのジョブの関連性が分からないことにある。

Jenkin Build Pipeline プラグインを使う

Jenkins Build Pipeline プラグインの詳細はこちらを参照のこと。

簡単に言えば、以下のような機能をもったプラグインだ。

このプラグインでは、アップストリームとダウンストリームの依存関係に基づいて、ジョブのチェーンを作成することができる。ダウンストリームのジョブはデフォルトでは自動的に実行のトリガーがほかれるが、手動でトリガーをひくこともできる。
また、1画面でパイプラインの履歴を見ることができ、現在の状況や各バージョンにおけるチェーンの状況やどこでパイプラインが停止したかといったことを見ることができる。

インストール方法については、Jenkinsのプラグインのいつもの方法でOKだ。 プラグインの画面で、「Build Pipeline Plugin」を選択するか、jenkins-cli.jarを利用すれば良い。

画面例

このプラグインを導入した後にまずやることは、ダッシュボードのところで「+」ボタンを押して新しいViewを作成することだ。その際に、選択肢に新たに「Build Pipeline View」が追加されているので、こちらを選択し、適当な名前を付ける。

ついで、Build Pipeline Viewの詳細な設定を行う。Select initial jobのところでパイプラインの先頭で流すジョブを選択し、No of displayed buildsでパイプライン画面にビルドを何個表示するかを設定する。

以上で完了だ。既にプロジェクト間の前後関係が作られていれば、パイプライン表示になっているはずだ。 以下の図はそれに加えていくつか設定を行ったものだ。

この例では、ユニットテスト(unittest) →結合テスト(integration1)→受け入れテスト(acceptance1)→ステージングリリース(staging_release)→本番リリース(production_release)のパイプラインを組んでいる。

このプラグインで特徴的なのは、パイプラインの手前が終わった場合に次を自動で進めるだけでなく、人がトリガーを引かないと先に進めないようにすることができることだ。上図の例では、受け入れテスト以降を手動でトリガーを引くことにしている(図中の上から3行目と4行目を参照)。これによってステージングや本番へのリリースは、人手によるクリックがなされた場合のみ行われることになる(当たり前だが、リリースのジョブはcapistranoを叩くなりなんなり自分で設定する必要はある)。

この画面の例ではリビジョン15はビルドに失敗、リビジョン16はテストは通ったが、ステージングリリースは実施せず、リビジョン18についてはパイプラインの最後まで流れたということになる。

既存の仕掛けを特に損なったり変更したりする必要はないので是非導入してみると良いだろう。

アジャイル開発チーム向けのコーチングや、技術顧問、Scrum Alliance認定スクラムマスター研修などのトレーニングを提供しています。お気軽にご相談ください(初回相談無料)
前の記事 5分で分かるデプロイ自動化への道
次の記事 継続的インテグレーションアンチパターン

プロダクト開発で、こんな課題を感じていませんか?

  • 何を作るべきか、順位の決め方が定まらない
  • プロダクトの方向性をチームで共有できていない
  • 開発組織の体制や役割がうまく機能していない
  • 開発プロセスが形骸化し、目的を見失っている
  • アジャイルを導入したが、組織に定着しない

プロダクトマネジメント、組織構造、開発プロセスの課題について、組織全体の視点から支援します。

お問い合わせ(初回相談無料)

契約を前提にした相談でなくて構いません。相談に際して事前の整理や準備は不要です。

Aligned ―プロダクト開発におけるステークホルダーとの関係性の築き方
ダイナミックリチーミング 第2版
Tidy First?
脳に収まるコードの書き方
プロダクトマネージャーのしごと 第2版
エンジニアリングマネージャーのしごと
チームトポロジー
スクラム実践者が知るべき97のこと
プロダクトマネジメント
SCRUM BOOT CAMP THE BOOK
みんなでアジャイル
レガシーコードからの脱却
Effective DevOps
変革の軌跡
ジョイ・インク
アジャイルコーチの道具箱
カンバン仕事術
Software in 30 Days
How to Change the World