前回は Jenkins2 でジョブごとに権限を設定する方法を紹介しました。
-
-
Jenkins2でジョブごとに権限を設定する
前回は Jenkins2 をインストールする方法と、認証周りの設定をまとめました。 Jenkins を運用してプロジェク ...
続きを見る
今回は Jenkins2 になって追加された「Jenkinsfile」と「Pipeline」の使い方を紹介します。
目次
- Jenkinsfile で何ができるか
- Pipeline の Hello World を試してみる
- もう少し複雑なサンプルを見てみる
- Snippet Generator で Pipeline のコードを生成
- Pipeline script サンプル
- Multibranch Pipeline で複数ブランチの自動テスト
Jenkinsfile で何ができるか
Jenkinsfile を使うと、「ブランチを作成して push した後、そのブランチに対してすぐにビルドを走らせる」ことができるようになります。これは Jenkins1 系でこれをやろうとすると、ブランチを作った後に毎回 Job を作る必要がありました。ブランチがマージされたら Job を消す必要もありました。Jenkins ファイルでこれらの手間から開放されます。
Pipeline の Hello World を試してみる
では Jenkinsfile を実際に作ってみます。まずは Pipeline の Hello World から。
新規ジョブ作成から「Pipeline」を選びます。ジョブの設定画面に移ったら、下のほうに「Pipeline」の項目があるので、try sample Pipeline... のプルダウンから「Hello World」を選択します。Script にコードが展開されるので、ジョブを保存します。

保存したジョブを実行すると。Pipeline script の stage ごとに結果が分かれて出力されます。ブロックをクリックすると詳細なログを見ることができます。

もう少し複雑なサンプルを見てみる
もうひとつのサンプルを見てみましょう。ジョブ設定に戻って try sample Pipeline... のプルダウンから「GitHub + Maven」を選びます。

Github から clone して、mvn clean install
を実行する Pipeline script のようです。やろうとしていることは理解できますが、Pipeline script は Groovy で書く必要があり、独自のルールがありそうです。私は、この先ジョブをどう書けばいいか困ってしまいました。チュートリアル的なものをやってみたい。マニュアルはどこだろう・・・。
Snippet Generator で Pipeline のコードを生成
上の画像の Pipeline script の左下に目をやると「Pipeline Syntax」のリンクが。おもむろにクリックすると、Snippet Generator なるものが開きました。どうやら Pipeline script を生成するツールのようです。これは良さそう。さっそく使ってみます。
とりあえず Github から clone したかったので、「Sample Step」のプルダウンで「git」を選択、リポジトリやブランチを入力して「Generate Groovy」ボタンをクリックすると、Pipeline script が生成されます。

生成されたコードをコピーして、元のジョブの Pipeline script に貼り付ければ OK です。私は Groovy はよく分かりませんが、この Generator のおかげでほとんど困らずに Pipeline script を作ることができています。
Snippet Generator の左側のメニューには Pipeline script のドキュメントもあるので、困ったら見てみましょう。
Pipeline script サンプル
初めて書いてみた Pipeline script がこれ。Symfony Console を git clone
して composer install
で依存パッケージをインストールして phpunit
でテスト実行してます。
node {
stage 'git clone'
git 'https://github.com/symfony/console.git'
stage 'composer install'
sh 'composer install'
stage 'phpunit'
sh 'phpunit -c phpunit.xml.dist'
}
実行結果。phpunit のところで失敗しています。右下に小さく failure と出てますね。step ごとにログが別れて出力されるので、どこで止まったか分かりやすいです。

Multibranch Pipeline で複数ブランチの自動テスト
上記の Pipeline script を Jenkinsfile という名前でプロジェクトのルートディレクトリに保存し、コミット、プッシュします。
新規ジョブ作成から「Multibranch Pipeline」を選び、ジョブの設定画面で、Jenkinsfile がコミットされているリポジトリを選択して保存します。
すると、Jenkinsfile が入っているブランチを探してきて、ブランチごとに Pipeline script を実行してくれます。

ジョブ設定のビルド・トリガを設定しておくと、変更があったブランチに対してジョブを自動で走らせることができます。スケジュール実行でもいいですが、「リモートからビルド」に設定して、git サーバから通知を送るようにしておくのがエコでいいと思います。保険で「Periodically if not otherwise run」を 4 時間くらいに設定しておけばより良いでしょう。

終わりに
3 回にわたって紹介してきた Jenkins2 の構築ですが、今回でいったん終わりです。1 回目の記事はこちらからどうぞ。
-
-
Jenkins2インストールと初期設定〜ユーザ、権限、git連携〜
Jenkins2 を試しました。今回から 3 回にわたって Jenkins2 のメモが続きます。初回は Jenkins2 ...
続きを見る