我想在多个pipelineJob定义中重用脚本,同时对一些参数值进行硬编码并使它们对用户不可见。这将使我可以使脚本更加通用,并向用户隐藏不必要的技术知识。
例如,我想使用相同的“ myapp_build.groovy”脚本,但传入不同的git repos或OS类型以供使用(我将其标记为“ hiddenParam”以表示应将其隐藏):
def jobDslScript = 'pipelines/myapp_build.groovy'
pipelineJob("my-app-build") {
description("Build my-app image")
parameters {
choiceParam('environment', ['dev','uat','prod'], 'Environment to build in')
stringParam('gitBranchName', '', 'git branch name')
hiddenParam('gitRepoName', 'https://my-repo.github.com', 'git repo path')
hiddenParam('os_type', 'linux', 'OS to use')
}
definition {
cps {
script(readFileFromWorkspace(jobDslScript))
sandbox()
}
}
}
pipelineJob("my-other-app-build") {
description("Build my-other-app image")
parameters {
choiceParam('environment', ['dev','uat','prod'], 'Environment to build in')
stringParam('gitBranchName', '', 'git branch name')
hiddenParam('gitRepoName', 'https://my-other-repo.github.com', 'git repo path')
hiddenParam('os_type', 'windows', 'OS to use')
}
definition {
cps {
script(readFileFromWorkspace(jobDslScript))
sandbox()
}
}
}
这将创建2个不同的pipelineJob,它们使用不同的参数调用同一脚本。
当前,我通过将这些“ hiddenParam”作为choiceParam的仅一个选项来实现这一点,由于用户无法更改它(并且我不希望他们更改它),因此这似乎毫无意义。 “ myapp_build.groovy”脚本处理所有不同的参数,并且我不想使用同一脚本的多个几乎完全相同的副本,只是在开始时设置了不同的“ hidden”值。
有没有办法做到这一点?我的一个限制是我无法添加新插件,所以如果有一种方法可以使用香草pipelineJob来实现,那就太好了。