windows - 如何将自定义 displayName 设置为 Jenkins 管道作业?

标签 windows git jenkins groovy jenkins-pipeline

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

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

enter image description here 我想通过 Jenkins 管道作业实现相同的目标。

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

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

但我收到“BRANCH_NAME”未设置的错误。

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

这是 SCM 步骤行为中的一个已知问题,特别是在管道作业中,但我想知道你们中是否有人找到了我可以实现的任何解决方法以在作业页面中显示此信息。

最佳答案

我通过做一些非常接近@haschibaschi 建议的事情来解决它,但在我的例子中,我将 BRANCH_NAME 写入工作区中的常规文件并将其加载到 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}"
        } 

现在相关信息显示为构建的名称: enter image description here

关于windows - 如何将自定义 displayName 设置为 Jenkins 管道作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44110119/

相关文章:

c++ - 如何在不占用系统资源的情况下拖放大量文件?

python - 如何删除行 [DEBUG] pip.vcs : Registered VCS backend: *** from log file

svn - 将 CM Synergy 存档转换为免费的源代码控制

svn - 同一个 svn 存储库的不同 git-svn 克隆是否期望能够共享更改然后 git svn dcommit?

android - 找不到与文件模式 "**/target/*.apk"匹配的 Artifact

c++ - Windows BlockInput 函数不工作

windows - 当一个类由于某种设计原因没有实现方法时返回哪个 HRESULT?

jenkins - 作业DSL创建 “Pipeline”类型的作业

java - docker 容器内的 Jenkinsfile Maven 插件

c++ - 使用 VC++ 在 Windows 上保护虚拟磁盘