我在 Windows Server 2016 上有 Jenkins LTS 2.60.2 并使用这些插件:
- 文件夹插件 (6.1.0)
- 复制神器插件 (1.38.1)
- 管道插件(2.5)+所有依赖的管道子插件
- 各种其他依赖插件...
有关我的设置的更多详细信息,请参阅管道以使用由相同 git 分支名称关联的 2 个项目中的工件,但总而言之,我有以下项目:
- 游乐场(使用文件夹插件创建的文件夹,用于对以下所有项目进行分组)
- 前端(多分支管道)
- 后端(多分支管道)
- 配置(带有名为 BRANCH_NAME 的参数的管道)
前端和后端git repos都有一个名为master的分支和一个名为release/2017.2的分支。
这个想法是在每次成功构建后自动调用配置管道,并传递 git 分支名称。自动触发配置管道工作。
什么不起作用,我需要你的帮助来解决,是配置管道中从 multibranchPipeline/specificBranch 复制工件的步骤。
如果 BRANCH_NAME 参数(或上游管道)是master它可以工作。如果 BRANCH_NAME 是:release/2017.2我收到此错误:
错误:无法找到工件副本的项目:playground/frontend/release%2f2017.2 这可能是由于项目名称或权限设置不正确;请参阅作业配置中项目名称的帮助。完成:失败
配置管道如下所示:
node {
stage('Prepare') {
def projectname = "playground/frontend/" + "${BRANCH_NAME}".replace("/", "%2f")
step([$class: 'CopyArtifact', projectName: "${projectname}", selector: [$class: 'StatusBuildSelector', stable: false]])
}
stage('Archive') {
archiveArtifacts '**'
}
}
如您所见,我已经将 / 替换为 %2f (这是必需的)。
如果我不使用“playground”文件夹(我的所有管道都原样,而不是在文件夹项中),它就可以工作。如果我使用该文件夹并使用 master 分支,它就可以工作。如果我使用文件夹和分支名称(如 2017.2),它不起作用。我究竟做错了什么?你能帮忙让它工作吗?好吧,如果它是一个错误(我在https://issues.jenkins-ci.org中搜索并发现了一些错误,其中文件夹的类似设置不起作用,但它们已被修复......所以我真的很想知道...... .) 在复制工件插件中,请在此处提交错误并分享链接,以便我们都可以监控其进度...
谢谢你。