📝

Jenkins Shared LibraryとPipelineの開発手法 

2024/11/07に公開

個人的JenkinsのPipeline、Shared Library開発フローを紹介します。

Pipeline

User Handbook - Pipeline

実装後に都度Jenkinsのジョブ設定を開いてコピペするのではなく、VSCode拡張機能のJenkins Jackでコードを転送してジョブをビルドします。
インストール方法や使い方、起動時エラーになる場合は以下をご確認ください。
https://unagirabbit.hatenablog.com/entry/2022/08/07/141308

実装〜テスト

  1. VSCodeでコードを書く
  2. Command PalletからJenkins Jack:Pipeline Executeを実行
    コードが転送&ジョブがビルドされ、VSCodeのOutputにログが出力される
  3. 実装完了したらコードをpushしてPipelineをgit参照に切り替える

ビルドにパラメーターが必要な場合は、Execute時に生成される.{job_name}.config.jsonに定義しておくと反映してくれます。

{
    "name": "job_name",
    "params": {
        "BRANCH": "main"
    }
}

補足

  • groovyのフォーマッターには、Groovy Lint, Format and Fixを利用すると良いです。
  • config.jsonparamsがnullで生成された時は、jsonファイルを削除してから実行するとDefaultValueで生成してくれます。

Shared Library

User Handbook - Extending with Shared Libraries

基本的にはコードをscmにコミットし、Pipelineの実行時にcheckoutして実行する必要があります。
なので追加変更があれば都度コミットしないと完全な動作確認はできません。
Pipelineに定義したりloadを行う場合、importやクラス参照によってはscriptApprovalを操作する必要があります。
そのため、jenkins-cliで構文チェックだけ行い、コミットするのが良いと思います。

公式にテストツール(JenkinsPipelineUnit)が用意されていますが、Jenkinsのクラスやimportしたクラスを使う場合はモックの用意が必要なので手間がかかります。
また、カバレッジの測定は未対応です。

実装〜テスト

  1. コードを書く
  2. jenkins-cliでコードをJenkinsに送信して動作確認
    java -jar {path/jenkins-cli.jar} -s {JENKINS_URL} -auth {userName}:{token} -webSocket groovy = {args} < {path/hoge.groovy}
    
  3. 実装完了したらコードをpushしてPipelineで確認

jenkins-cli.jarJENKINS_URL/cliJENKINS_URL/jnlpJars/jenkins-cli.jarから直接ダウンロードできます。
送信時にチェック用メソッドを呼び出して出力を確認することもできるので、簡易的なチェックが可能です。

// hoge.groovy
void hoge(Map params) {
    println params.text
}

// テスト用の呼び出し
hoge(text: args[0])
// ^コミット時には削除するかコメントアウト

Discussion