在 Jenkins 声明性管道中复制工件时如何处理可能不存在的分支?
How to handle a possible non-existant branch when copying artifacts in a Jenkins declarative pipeline?
我有两个多分支管道作业,其中一个必须从另一个获取工件。如果两个存储库都有匹配的分支,我想使用相应的分支,但我想在必要时退回到使用 master;在应用程序中可能会或可能不会针对此功能修改库。我可以轻松选择当前分支
copyArtifacts(projectName: "upstream_library/${BRANCH_NAME}", selector:lastSuccessful())
但如果没有分支,构建就会失败。看来我要么需要捕获错误,要么需要在获取之前测试分支是否存在,这两种情况我都看不到如何在声明性管道中执行。我必须使用 script
步骤吗? ( 建议解决一个稍微不同的问题)
一个script
步骤有效
steps {
script {
try {
copyArtifacts(projectName: "upstream_library/${BRANCH_NAME}", selector:lastSuccessful())
} catch (err) {
copyArtifacts(projectName: "upstream_library/master", selector:lastSuccessful())
}
}
我有两个多分支管道作业,其中一个必须从另一个获取工件。如果两个存储库都有匹配的分支,我想使用相应的分支,但我想在必要时退回到使用 master;在应用程序中可能会或可能不会针对此功能修改库。我可以轻松选择当前分支
copyArtifacts(projectName: "upstream_library/${BRANCH_NAME}", selector:lastSuccessful())
但如果没有分支,构建就会失败。看来我要么需要捕获错误,要么需要在获取之前测试分支是否存在,这两种情况我都看不到如何在声明性管道中执行。我必须使用 script
步骤吗? (
一个script
步骤有效
steps {
script {
try {
copyArtifacts(projectName: "upstream_library/${BRANCH_NAME}", selector:lastSuccessful())
} catch (err) {
copyArtifacts(projectName: "upstream_library/master", selector:lastSuccessful())
}
}