Jenkins管道Jenkins文件加载外部groovy类
有人能就如何将外部groovy类加载到Jenkins文件中提供建议吗? 通常,我希望通过构造函数传递参数来构建实例。 下面是示例代码 詹金斯档案 工具.groovyJenkins管道Jenkins文件加载外部groovy类,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,有人能就如何将外部groovy类加载到Jenkins文件中提供建议吗? 通常,我希望通过构造函数传递参数来构建实例。 下面是示例代码 詹金斯档案 工具.groovy public class Demo { String message; Demo(String message) { this.message=message; } public void print(def script) { scri
public class Demo {
String message;
Demo(String message) {
this.message=message;
}
public void print(def script) {
script.sh "echo " + message
}
}
如果您的外部groovy文件与Jenkins文件位于同一个存储库中,您可以简单地使用“加载”,如下所示
mytools = load 'Tools.groovy'
如果它在另一个repo中,则需要在加载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']]]
在Tools.groovy
中,必须有一个返回语句。。。由于您希望在类内调用函数,因此必须在最后返回new Demo(),这将返回对象对mytools的引用
除此之外,您还可以始终使用groovy类加载器。这样做需要一个助手函数 工具.groovy 詹金斯档案
load
对函数很有效,但似乎无法处理类(根据问题)。根据问题,他们希望加载类,而不是实例。默认不受信任的代码中不允许使用类加载器。
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']]]
mytools = load 'Tools.groovy'
public class Demo {
}
return new Demo() ;
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)
}
}
}