有人可以建议如何将外部groovy类加载到Jenkinsfile中吗? 一般来说,我想通过构造函数传递参数来构建实例。 示例代码如下。
Jenkinsfile
stage('Demo stage') {
//missing part
}
Tools.groovy
public class Demo {
String message;
Demo(String message) {
this.message=message;
}
public void print(def script) {
script.sh "echo " + message
}
}
答案 0 :(得分:2)
mytools = load 'Tools.groovy'
public class Demo {
}
return new Demo() ;
在你的Tools.groovy
中你必须有一个return语句...因为你想在一个类中调用函数,你必须在最后返回新的Demo(),这将返回对象的引用到mytools。
除此之外,你总是可以使用groovy类加载器。
答案 1 :(得分:0)
如果您的外部groovy文件位于JenkinsFile所在的同一个存储库中,您只需使用" load"如下图所示
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']]]
答案 2 :(得分:0)
它需要辅助功能。
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)
}
}
}