jenkins - 从外部 groovy 文件加载 jenkins 参数
问题描述
我有一个很大的 Jenkinsfile,我想将它重新用于其他项目,但是每个项目都有不同的参数,所以我尝试让每个项目只有一个文件,其中只包含如下参数:
詹金斯文件
node {
checkout scm
def options = []
def optionsBuilder = load pwd() + '/global-scripts/optionsBuilder.groovy'
options.addAll(optionsBuilder.buildOptions(env.JOB_BASE_NAME))
properties { options }
}
全局脚本/optionsBuilder.groovy
def buildOptions(jobName) {
echo "load " + pwd() + "/project-scripts/" + jobName + ".groovy"
def jobOptionsBuilder = load pwd() + "/project-scripts/" + jobName + ".groovy"
return jobOptionsBuilder.buildOptions()
}
return this
项目脚本/job.groovy
def buildOptions() {
def options = [buildDiscarder(logRotator(numToKeepStr: '5')),
parameters([string(name: 'releaseVersion', defaultValue: env.releaseVersion, description: 'Version that needs to be released'),
string(name: 'nextVersion', defaultValue: env.nextVersion, description: 'Next snapshot version' ),
string(name: 'branch', defaultValue: env.branch, description: 'Branch that needs to be released'),
booleanParam(name: 'sendRocketChatNotification', defaultValue: true, description: 'Send notification to Rocket_Chat'),
booleanParam(name: 'sendEmail', defaultValue: true, description: 'Send an email with changelog'),
booleanParam(name: 'dryRun', defaultValue: false, description: 'No git push and no mvn deploy')])]
return options
}
return this
但似乎我找不到正确的语法..詹金斯给我这个错误:
java.lang.ClassCastException: org.jenkinsci.plugins.workflow.multibranch.JobPropertyStep.properties expects java.util.List<hudson.model.JobProperty> but received class org.jenkinsci.plugins.workflow.cps.CpsClosure2
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:394)
at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:318)
解决方案
我的印象是,在您的 Jenkinsfile 中,您应该只写
properties(options)
推荐阅读
- oracle - 如何在 Oracle 12c (12.2.0.1.0) 中处理 ORA-00028“你的会话已被终止”?
- python - 如何选择 python pandas 排列列与行
- nunit - 倾城报告删除控制台输出附件?
- python - 提取数据并使用 openpyxl 修改现有的 excel
- apache - htaccess 重写。总是替换域之后的第一部分
- facebook - 以下 facebook 登录:setReadPermissions 和 registerCallback 给我错误
- java - IntelliJ:使用 JAVA_HOME 变量添加 Java SDK
- python - 将列表取消嵌套在列表中的函数中使用的递归机制
- javascript - 当我运行此代码时,我没有得到任何输出,请提供任何建议或更正
- r - 将数据框更改为具有 1 和 0 的另一个数据框