[英]jenkins : update parameters via groovy script
我在服务器上有一个文本文件,例如 /var/lib/jenkins/.../myChoices.txt
FirstChoice,SecondChoice
由于文件会不时更新,我希望脚本每次单击“使用参数构建”时都会更新参数
但是我的代码仅在我构建作业时才有效,即不是实时更新。
def getMyChoices() {
List<String> choices = Arrays.asList(readFileFromWorkspace('/var/lib/jenkins/.../myChoices.txt').split(','))
return choices
}
job(jobName) {
description("Deploy something based on choice.")
parameters {
...
...
choiceParam('EB_ACTIVE_ENV_NAME', getMyChoices(), '')
}
}
由于某些漏洞原因,我也不想使用 hudson 插件。
Groovy 脚本仅在作业运行时执行。 因此,在作业运行之前,不会刷新参数
唯一可用的解决方案是定期对这项工作使用额外的标志来单独刷新参数然后退出。
这样,无论何时单击 Build on Parameters 选项,您都将拥有文件中存在的最新参数。
需要重新生成作业才能刷新参数。 我要做的是创建一个作业,当我在 myChoices.txt 版本化的存储库上发生更改时,该作业会使用 jobdsl 步骤生成作业
这是使用 jobDsl 的示例
jobDsl removedJobAction: 'DELETE',
removedViewAction: 'DELETE',
targets: targetFile,
unstableOnDeprecation: true,
additionalParameters: [
pipelineJobs: arrFiles,
props: [
basePath: destination,
gitRemoteUrl: config.gitRemoteUrl,
gitConfigJenkinsBranch: config.gitConfigJenkinsBranch,
localPath: config.localPath ?: ''
]
]
我将它与我创建的共享库一起使用,该库允许我抽象 jobDSL 并只编写 pipelineDSL https://github.com/SAP/jenkins-pipelayer/但对此库有限制,因为我解析了 pipelineDSL,getMyChoices()不会在当前版本的 lib 中进行评估
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.