はじめに
船井総研デジタルのoswです。業務でjenkinsに触れることになったので学習記録を残します。参考になる方がいらっしゃれば幸いです。
このシリーズのゴール
下記をゴールとします。
- 閉じたLAN環境にあるマシンにjenkins環境を構築(別マシンからjenkinsにアクセス)
- 手動でジョブを起動し、githubリポジトリをクローン / 単体テストを走らせる
学習環境
- Windows 11 (WSL2 Ubuntu)
- Rocky Linux 9.1
- jenkins 2.375.3
前回の学習内容
サンプルジョブを作成して実行までを学習しました。
パイプラインジョブの作成
前回のサンプルジョブでは、ジョブの設定画面でパラメータを指定していましたが、Pipeline scriptからUIのパラメータへ反映することも可能なようです。
むしろ、Pipeline scriptをjenkinsfileとして保存、gitで管理してそれをパイプラインに読み込ませる事の方が多いでしょうから、ジョブの扱い方としては上記の方が自然かも知れません。
そこで、今回は用意したjenkinsfileを読み込ませてジョブを作成します。
下記が今回使うリポジトリです。
- jenkinsでクローン/テストさせるリポジトリ
- 今回はgoで作ったサンプルプログラムを用意しました。
- パイプラインで読み込ませるjenkinsfileを管理するリポジトリ
ビルドパラメータをPipeline scriptで定義する
gitで管理しているjenkinsfileを読み込ませるには画像のように[Pipeline script from SCM]を選択し、リポジトリや認証情報、ブランチなどを設定します。1
ここで2点注意が必要です。1点目は、設定項目の最後にある「Script Path」にはクローンしたリポジトリからの相対パスを考慮した上でjenkinsファイル名を指定するようです。
2点目は、jenkinsfileに関する注意です。jenkinsfileでparametersセクションを使ってパラメータを定義する場合、その値を参照する際は${params.branch}
としてください。
jenkinsfileからパラメータを設定する場合、そのジョブを1度実行し終えた段階でUI側にも反映されるようです。${branch}
はUIから設定されたパラメータを参照しようとしますので、jenkinsfileを読み込んだ時点で${branch}
とすると、まだ設定されていないUI上のパラメータを参照しようとするためエラーとなってしまうようです。
jenkinsにビルド/テストさせる
パイプラインジョブの作成で紹介したjenkinsfileを読み込ませ、実行した結果が下記の画像です。意図した通り、jenkinsfileを管理するリポジトリからjenkinsfileを読み込み、それを参照してgoのサンプルをクローン、テストまで行っています。
コンソールの出力結果を見てもテストが走っていることが確認できます。
ジョブ実行後のパラメータを確認する
jenkinsfileで設定するパラメータは、ジョブを実行されるとUI側にも反映されるそうなので、実際に確認してみると画像のように設定されていることが確認できました。
ジョブ実行後のパラメータを編集する
jenkinsfileを読み込んでパラメータを設定した場合、次回実行時にパラメータを編集した場合は「そのジョブ内」でだけ有効なようです。ジョブの詳細画面、及び「パラメータ付きビルド」でパラメータを編集しても実行後に元に戻るようです。
先程の実行でbranch
はmain
に設定されていますが、これをtest
ブランチに編集して実行してみます。(もちろんtestブランチは作成されています)
コンソールの出力結果も確認すると、test
ブランチに切り替えているようですので成功です。
次に、ジョブのビルド画面で先程編集したパラメータの値がどうなっているか確認します。jenkinsfileで定義した値 main
に戻っています。
おわりに
jenkinsを触る上でのジョブ作成の仕方は最低限は押さえられたのではないかな、と思います。
ゴールは達成できたのでひとまずこのシリーズは終了とします。
-
認証情報を追加していない場合は、[+追加]ボタン押下で追加することができます。 ↩