我有在Job DSL中定义的pipelineJob。
它运行管道/ Jenkinsfile,并从git中检出。
[我希望人们能够输入要从中拉出Jenkinsfile的git分支-(即在stringParam中)-或者,如果他们没有键入分支,则默认为我在其中设置的分支choiceParam(即为“开发”或“母版”)
这不起作用:
pipelineJob('some-job') {
parameters {
choiceParam('gitCreds', [gitCreds], 'Stash credential')
stringParam('gitUrl', 'https://some-repo.git', 'URL for the Stash repo')
stringParam('gitBranchOverride', '', 'Type in some feature branch here if you wish')
choiceParam('gitBranch', ['develop'], '...otherwise the job should default to a branch here')
}
definition {
cpsScm {
scm {
git {
branch('$gitBranchOverride' ?: '$gitBranch')
extensions {
wipeOutWorkspace()
}
remote {
credentials(gitCreds)
url ('$gitUrl')
}
}
}
}
}
}
[如果我在gitBranchOverride中输入一个值,它会起作用,但是如果我不输入,它似乎会枚举所有分支,并随机检查一个分支-即,它不兑现gitBranch中的值
不知道我是否正确理解了您的问题,但这就是我编写代码的方式来创建pipelinejobs:
def git_branch = getBinding().getVariable('GIT_BRANCH')
def gitrepo = "ssh://[email protected]/somerepo.git"
def credential_id = "awesomecredentials"
pipelineJob("MyAwesomeJob") {
description("""This job is awesome\n\n__input__:\n* My parameter\n* Branch\n\n__branch__: ${git_branch}""")
parameters {
stringParam(name='MyParameter', description='AwesomeParameterHere')
stringParam('branch', defaultValue='origin/develop', description='Branch to build')
}
definition {
cpsScm {
scm {
git {
branch('$branch')
remote {
url("gitrepo")
credentials(credential_id)
}
}
scriptPath("jenkins/my_awesome_pipeline/Jenkinsfile")
}
}
}
}
使用此选项,将为我的工作创建一个branch参数,并选择一个默认参数。