如何为Jenkins流水线作业设置自定义displayName?

3

我的一个客户有一些自由风格的Jenkins作业,这些作业使用名为“Build Name Setter”的插件在作业的描述或displayName中显示"#${BUILD_NUMBER}|${BRANCH_NAME}"

不幸的是,这个插件只能在自由风格作业中正常工作。

enter image description here 我想通过Jenkins流水线作业实现相同的目标。

我尝试在checkout步骤之后添加以下行:

currentBuild.displayName = "#${BUILD_NUMBER}|${BRANCH_NAME}"

但是我遇到了一个错误,提示“BRANCH_NAME”未设置。

我必须使用“SCM步骤”而不是专用插件,因为我正在克隆的存储库是TFS-Git存储库,而它的插件没有此功能。

这是SCM步骤在管道作业中特定行为的已知问题,但我想知道是否有任何解决方法,可以实现在作业页面上显示此信息。

3个回答

1
我通过执行与 @haschibaschi 建议非常相似的操作来解决了这个问题,但在我的情况下,我将 BRANCH_NAME 写入了工作区中的 groovy 文件,并将其加载到 BRANCH_NAME 变量中。
stage ('Checkout SCM') {
            checkout([$class: 'GitSCM', branches: [[name: '*/feature/*']], doGenerateSubmoduleConfigurations: false, extensions: [], url: 'http://TFS_SERVER:8080/tfs/DefaultCollection/PC_International/_git/project']]])
            bat """
                cd %workspace%
                set branch="git rev-parse --abbrev-ref HEAD"
                FOR /F "tokens=*" %%i IN (' %branch% ') DO SET BRANCH_NAME=%%i
                echo %BRANCH_NAME% > BRANCH_NAME.groovy
            """
            BRANCH_NAME = readFile('BRANCH_NAME.groovy')
            currentBuild.displayName = "# ${BUILD_NUMBER} | ${BRANCH_NAME}"
        } 

现在相关信息显示为构建名称: 输入图像描述

除了舞台之外,你如何完成这个任务?我的流水线中有很多个阶段。 - Dave

-2

手动获取分支名称并将其分配给BRANCH_NAME。

类似这样(未验证代码):

dir("checkoutdir") {
   BRANCH_NAME = sh (
     script= "git branch | grep \* | cut -d ' ' -f2'",
     returnStdout: true
   ).trim()
}
echo "branchname: $BRANCH_NAME"

谢谢您的回复,我忘了提到它正在运行在一个Windows Jenkins从属节点上。 - Itai Ganot

-3
在 Jenkinsfile 中,${env.BRANCH_NAME} 应该可以正常工作。

这里没有上下文。你在哪里设置那个变量?你能展示一些你的工作示例或屏幕截图吗? - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接