私は自分のJenkins共有ライブラリを作成して、パイプライン間でコードを再利用しています。私はステップを作成する方法を知っていますが(実際には簡単ですが)、jenkinsfile(またはJenkinsがログで言うようにWorkflowScript)で "utils class"にアクセシブルにしたいときに問題があります。 私は例えば、私はこのようなログクラスを作成したい、「Utilのクラス」フォルダのsrc /私/ドメインにあるGroovyのクラス/ ...多くのメソッドを持って呼び出します。Jenkins共有ライブラリインスタンス化utilクラスとワークフロースクリプトで使用
# src/my/domain/group
package my.domain.group
class Console implements Serializable {
def log(msg) {
spit(msg, '\033[34m')
}
def error(msg) {
spit(msg, '\033[31m')
}
def warning(msg){
spit(msg, '\033[33m')
}
def success(msg){
spit(msg, '\033[32m')
}
private def spit(msg, color){
ansiColor('xterm') {
echo color + msg + '\033[0m'
}
}
}
そして私その一例と同様に、いくつかのコードでJenkinsfileからアクセスすることができます/vars/library.groovy内のファイルでインスタンス化しよう:
node("mynode"){
console.log("Hello World!")
}
アイデアは、すべてのスクリプトでコンソールをインスタンス化し、それを作るために避けるためです自動的に、私はいくつかのようなものを試みました
# vars/library.groovy
import my.domain.group.Console
import groovy.transform.Field
@Field String console = new Console()
または
# vars/library.groovy
import my.domain.group.Console
def load(){
this.console = new Console()
// And also
console = new Console()
}
しかし、私は常にエラーを取得ジェンキンスファイルからアクセスしようとして: groovy.lang.MissingPropertyException:いいえ、そのようなプロパティ:クラスのコンソール:WorkflowScript
私は、この手段を理解しますインスタンスが正しいスコープにないため、スクリプトで直接見ることはできませんが、どうすればよいのでしょうか?
ありがとうございます!
あなたのお返事ありがとうアドリアン!私はステップを使用する方法を知っていますが、このコードを私の例に残すことを忘れてしまいました:-)あなたの答えを読んで、私はクラスのインスタンスをJenkinsのパイプラインで直接使うことができないことを理解できますか?私はコンソールで自分のメソッドのそれぞれについて異なるステップを作成するオプションを知っていますが、コンソールのインスタンスを直接varsから公開する方がはっきりしていると思います(これが可能であれば知っていますか?)、Jenkinsファイル私が私の例で示すように直接。 – joliva
'library.groovy'スクリプトを' vars'の中に入れなくても、Jenkinsfileで 'Console'クラスを直接使うことができます。 '@Library( '[LIB_NAME]')_'を使ってあなたの共有ライブラリをインポートするようにしてください。ここで' [LIB_NAME] 'はJenkinsの設定で指定したライブラリの名前で、' my.domain。あなたのJenkinsfileの中の "util.Console'を開きます。 –