需要通过 git sha 来结帐到 Jenkins 多分支管道
Need to pass git sha to checkout to Jenkins multi branch pipeline
是否可以使用参数允许用户将 git sha 传递给多分支管道,同时默认为分支头?另外,我只需要为主分支使用此功能。
我正在使用...
代码中的 Jenkinsfile
Jenkins 声明式管道
是的,这是可能的,但我猜你必须使用脚本化管道而不是声明式管道。
如果当前分支是master,你为这个构建配置一个参数(因为这不是很直观,我前段时间写了一个blog article)。例如,params.INPUT_REVISION
将存储给定的修订版,如果尚未指定参数(例如,对于第一个 运行),您可以将默认设置为 HEAD
或回退到它。
您将此修订作为参数提供给 checkout(scm)
步骤,这样它就不会检出当前主分支,而是检出指定的修订。
我能够通过以下声明式管道做到这一点...
pipeline {
options {
skipDefaultCheckout()
}
...
steps {
script {
if (GIT_REVISION=='HEAD') {
checkout scm
} else {
checkout([$class: 'GitSCM',
branches: [[name: "${params.GIT_REVISION}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'XXXXXXX', url: 'git@github.com:xxxxx/xxxxx.git']]
])
}
...
}
}
}
是否可以使用参数允许用户将 git sha 传递给多分支管道,同时默认为分支头?另外,我只需要为主分支使用此功能。
我正在使用...
代码中的 Jenkinsfile
Jenkins 声明式管道
是的,这是可能的,但我猜你必须使用脚本化管道而不是声明式管道。
如果当前分支是master,你为这个构建配置一个参数(因为这不是很直观,我前段时间写了一个blog article)。例如,
params.INPUT_REVISION
将存储给定的修订版,如果尚未指定参数(例如,对于第一个 运行),您可以将默认设置为HEAD
或回退到它。您将此修订作为参数提供给
checkout(scm)
步骤,这样它就不会检出当前主分支,而是检出指定的修订。
我能够通过以下声明式管道做到这一点...
pipeline {
options {
skipDefaultCheckout()
}
...
steps {
script {
if (GIT_REVISION=='HEAD') {
checkout scm
} else {
checkout([$class: 'GitSCM',
branches: [[name: "${params.GIT_REVISION}"]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'XXXXXXX', url: 'git@github.com:xxxxx/xxxxx.git']]
])
}
...
}
}
}