[英]Jenkins Pipeline Jenkinsfile load external groovy class
任何人都可以就如何將外部 groovy 類加載到 Jenkinsfile 中提出建議嗎? 一般來說,我想通過構造函數傳遞參數來構建實例。 下面的示例代碼。
詹金斯檔案
stage('Demo stage') {
//missing part
}
工具.groovy
public class Demo {
String message;
Demo(String message) {
this.message=message;
}
public void print(def script) {
script.sh "echo " + message
}
}
mytools = load 'Tools.groovy'
public class Demo {
}
return new Demo() ;
在您的Tools.groovy
您必須有一個 return 語句...因為您要在類中調用函數,所以您必須在最后返回 new Demo(),這會將對象的引用返回到 mytools。
除此之外,您始終可以使用 groovy 類加載器。
如果您的外部 groovy 文件位於 JenkinsFile 所在的同一存儲庫中,您可以簡單地使用“加載”,如下所示
mytools = load 'Tools.groovy'
如果它在另一個倉庫中,您需要在加載 groovy 文件之前簽出 scm,如下所示
checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'jenkins-scripts']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: '******', url: 'https://github.com/jenkins_scripts.git']]]
它需要一個輔助函數來做到這一點。
public class Demo {
String message;
Demo(String message) {
this.message = message;
}
public void print(def script) {
script.sh "echo " + message
}
}
Demo createDemo(String message) {
new Demo(message)
}
return this
stage('Demo stage') {
steps {
script {
Object lib = load 'path/to/Tools.groovy'
Object demo = lib.createDemo('a demo')
demo.print(this)
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.