Jenkins で共有ライブラリとして読み込まれるリポジトリ内のこの groovy ファイルについて考えてみましょう。
/ vars
|
--- Utility.groovy
// Utility.groovy
def funcA() { ... }
def funcB() { ... }
そしてジェンキンスファイルで:
// Jenkinsfile
@Library('LibName') _
pipeline {
...
steps {
script {
def util = new Utility()
util.funcA()
}
}
}
これはうまくいきます。しかし、ライブラリを動的にロードしようとすると:
// Jenkinsfile
pipeline {
...
steps {
script {
library 'LibName'
def util = new Utility()
}
}
}
それはうまくいきません...
ドキュメントからのこの引用に関して、誰かがこれを説明できますか:
Jenkins の共有ライブラリのドキュメントには次のように書かれています。
内部的には、vars ディレクトリ内のスクリプトはオンデマンドでシングルトンとしてインスタンス化されます。これにより、便宜上、単一の .groovy ファイルで複数のメソッドを定義できます。