我终于找到问题了。这配置由于编码不正确,管道无法找到带有斜杠的分支。
所以,在我的问题中,配置管道:
这个(替换/
with %2f
) 是错误的并生成error:
def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2f")
这是对斜杠进行编码的正确方法,并且它works:
def projectname = "playground/frontend/" + URLEncoder.encode("${BRANCH_NAME}", "UTF-8").replace("+", "%20")
致谢:http://www.pipegrep.se/copy-artifacts-from-jenkins-pipeline-jobs.html http://www.pipegrep.se/copy-artifacts-from-jenkins-pipeline-jobs.html
UPDATE:实际上,我进一步调查并添加了echo "${projectname}"
就在之前step
,使用以前的固定项目名称,我注意到区别是%2f
小写.
大写, 像这样:%2F
works:
def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2F")
所以,固定的配置管道看起来像这样(我保留了替换功能,这对于我的情况来说已经足够了):
node {
stage('Prepare') {
def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2F")
step([$class: 'CopyArtifact', projectName: "${projectname}", selector: [$class: 'StatusBuildSelector', stable: false]])
}
stage('Archive') {
archiveArtifacts '**'
}
}