Jenkins 附加到作业属性
job-dsl.groovy中定义的我的作业参数被管道中定义的参数覆盖 我正在使用和Jenkins管道为每个git分支生成Jenkins作业。因为我的代码存储在gitLab中,所以它们需要gitLab集成。我提供的是使用。问题在于“gitLabConnection”,它看起来只能从Jenkins管道内部应用 因此,如果在工作dsl中,我会:Jenkins 附加到作业属性,jenkins,jenkins-pipeline,jenkins-job-dsl,Jenkins,Jenkins Pipeline,Jenkins Job Dsl,job-dsl.groovy中定义的我的作业参数被管道中定义的参数覆盖 我正在使用和Jenkins管道为每个git分支生成Jenkins作业。因为我的代码存储在gitLab中,所以它们需要gitLab集成。我提供的是使用。问题在于“gitLabConnection”,它看起来只能从Jenkins管道内部应用 因此,如果在工作dsl中,我会: branches.each { branch -> String safeBranchName = branch.name.replaceAll('/
branches.each { branch ->
String safeBranchName = branch.name.replaceAll('/', '-')
if (safeBranchName ==~ "^release.*")
{
return
}
def branch_folder = "${basePath}/${safeBranchName}"
folder branch_folder
pipelineJob("$branch_folder/build") {
logRotator {
numToKeep 20
}
parameters {
stringParam("BRANCH_NAME", "${safeBranchName}", "")
stringParam("PROJECT_NAME", "${basePath}", "")
{
}
然后在我的Jenkins管道中,我会添加“gitLabConnection”
node('node_A') {
properties([
gitLabConnection('gitlab.internal')
])
stage('clean up') {
deleteDir()
}
///(...)
我必须这样做:
node('node_A') {
properties([
gitLabConnection('gitlab.internal'),
parameters([
string(name: 'BRANCH_NAME', defaultValue: BRANCH_NAME, description: ''),
string(name: 'PROJECT_NAME', defaultValue: PROJECT_NAME, description: '')
])
])
stage('clean up') {
deleteDir()
}
///(...)
这样我的分支机构名称和项目名称就不会被覆盖。
还有别的办法解决这个问题吗?
是否可以将“gitlab连接('gitlab.internal')”附加到Jenkins管道中的属性中?有两种方法可以解决此问题。第一个只使用Jenkins管道代码,但如果选择此路径,则初始作业运行很可能会失败。这种初始失败将会发生,因为在第一次作业运行时,管道会创建Jenkins作业参数。一旦参数被创建,作业将工作
检查中:
“此项目已参数化”。
添加所需的参数,并点击“生成管道脚本”。就我而言,我得到: 性质([ gitLabConnection(gitLabConnection:'my_gitlab_connection',jobCredentialId:'',useAlternativeCredential:false), [$class:'JobRestrictionProperty'], 参数([ 字符串(defaultValue:'test',description:'test',name:'test',trim:false) ]), throttleJobProperty(类别:[],limitOneJobWithMatchingParams:false,maxConcurrentPerNode:0,maxConcurrentTotal:0,paramsToUseForLimit:“”,throttleEnabled:false,throttleOption:'project') ])
使用Jenkins job DSL插件- Gitlab插件可以很好地使用它
不幸的是,似乎还没有办法做到这一点。在上有一些关于这方面的讨论,我可能会打开一个功能请求,允许人们“附加到属性”老实说,这是我能在网上找到的唯一参考资料。我知道已经2年了,但我已经不知所措了。你找到答案了吗?请检查我的答案:)问题是如何在Jenkins文件中定义“属性”,以便它们不会覆盖JobDSL已在作业上设置的属性。是@BrandonSquizzato,这将是选项1。