在 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())
        }
    }