note/Jenkins で複数のプロジェクトがあって、それぞれにビルドやデプロイのジョブを作成している。 同じようなステップを実行するので、共通処理をまとめてメンテナスしやすくしたい。
Jenkins Shared Library
Shared Libraryを使うとpipelineからライブラリに定義された関数や変数を使うことができる。 Jenkins Shared Librariesの活用事例の紹介 - DeNA Testing Blog
なんと pipeline {}
ごと定義することもできる。
使い方
Share a standard Pipeline across multiple projects with Shared Libraries
Extending with Shared Libraries
- ライブラリを作成する
ライブラリ用のリポジトリを作成して、ディレクトリ構成を以下のようにする(srcかvarsどちらか一つは必須)
mylibrary
+- src # Groovy source files
| +- org
| +- foo
| +- Bar.groovy # for org.foo.Bar class
+- vars
| +- foo.groovy # for global 'foo' variable
| +- foo.txt # help for 'foo' variable
+- resources # resource files (external libraries only)
| +- org
| +- foo
| +- bar.json # static helper data for org.foo.Bar
処理を以下のように記述する。callメソッドを定義すると
mylibrary/vars/hello.groovy
- Jenkinsの管理 > システムの設定 > Global Pipeline Libraries に、ライブラリのリポジトリを設定する
設定値は見ての通り
- pipelineを作成する
Jenkinsfile
vars
配下に作成した場合は、globalに定義されるためimportを書かずに利用できる。
src
配下に作成した場合は、importしてnewでインスタンスを作成した上で利用できる。