我们正在使用Jenkins Job DSL插件在代码中配置我们的所有作业,并且在部署更改之前经常使用本地Jenkins登台环境进行测试。我们不希望我们的大量数百个工作开始在本地构建,但我们确实希望确保DSL有效并且所有工作都正确创建。
有没有办法覆盖例如scm
的{{1}}参数,以便在我们所有的groovy文件中本地无操作?我相信我可以编写一个自定义库文件来执行此操作,但是我必须在每个groovy文件中添加一个导入行来导入我们的自定义trigger
定义,这不是理想的。 / p>
为了澄清,我正在寻找一种方法来优雅地或通过猴子修补代码来覆盖某些定义,这样我们就不必要求更改每个groovy文件和作业定义,其中有很多。
答案 0 :(得分:1)
答案 1 :(得分:0)
对我有用的是:
e.g。像这样:
将此放入JenkinsInstance.groovy:
import jenkins.model.*
// Representing the Jenkins server instance
class JenkinsInstance {
// Determine if we're executing on a Jenkins production instance.
static Boolean isProd() {
if (Jenkins.getInstance().getRootUrl() ==~ ".*jenkins\\.mydomain\\..*") {
return true
} else {
return false
}
}
}
你的创造就业机会DSL脚本看起来像这样
import JenkinsInstance
freeStyleJob("myjobname") {
if (JenkinsInstance.isProd()) {
scm {
git {
...
}
}
} else {
scm {
}
}
}
答案 2 :(得分:0)