📝
Jenkins Shared LibraryとPipelineの開発手法
個人的JenkinsのPipeline、Shared Library開発フローを紹介します。
Pipeline
実装後に都度Jenkinsのジョブ設定を開いてコピペするのではなく、VSCode
拡張機能のJenkins Jackでコードを転送してジョブをビルドします。
インストール方法や使い方、起動時エラーになる場合は以下をご確認ください。
実装〜テスト
-
VSCode
でコードを書く -
Command Pallet
からJenkins Jack:Pipeline Execute
を実行
コードが転送&ジョブがビルドされ、VSCode
のOutputにログが出力される - 実装完了したらコードをpushしてPipelineをgit参照に切り替える
ビルドにパラメーターが必要な場合は、Execute時に生成される.{job_name}.config.json
に定義しておくと反映してくれます。
{
"name": "job_name",
"params": {
"BRANCH": "main"
}
}
補足
- groovyのフォーマッターには、Groovy Lint, Format and Fixを利用すると良いです。
-
config.json
のparams
がnullで生成された時は、jsonファイルを削除してから実行するとDefaultValueで生成してくれます。
Shared Library
User Handbook - Extending with Shared Libraries
基本的にはコードをscmにコミットし、Pipelineの実行時にcheckoutして実行する必要があります。
なので追加変更があれば都度コミットしないと完全な動作確認はできません。
Pipelineに定義したりload
を行う場合、importやクラス参照によってはscriptApproval
を操作する必要があります。
そのため、jenkins-cli
で構文チェックだけ行い、コミットするのが良いと思います。
公式にテストツール(JenkinsPipelineUnit)が用意されていますが、Jenkinsのクラスやimportしたクラスを使う場合はモックの用意が必要なので手間がかかります。
また、カバレッジの測定は未対応です。
実装〜テスト
- コードを書く
- jenkins-cliでコードをJenkinsに送信して動作確認
java -jar {path/jenkins-cli.jar} -s {JENKINS_URL} -auth {userName}:{token} -webSocket groovy = {args} < {path/hoge.groovy}
- 実装完了したらコードをpushしてPipelineで確認
jenkins-cli.jar
はJENKINS_URL/cli
かJENKINS_URL/jnlpJars/jenkins-cli.jar
から直接ダウンロードできます。
送信時にチェック用メソッドを呼び出して出力を確認することもできるので、簡易的なチェックが可能です。
// hoge.groovy
void hoge(Map params) {
println params.text
}
// テスト用の呼び出し
hoge(text: args[0])
// ^コミット時には削除するかコメントアウト
Discussion