一尘不染

我如何从Jenkins中的提交消息中获取JIRA发行号

jenkins

我正在使用Gitlab进行源代码管理,使用jenkins进行CI作业,使用JIRA进行问题跟踪。

一旦我以问题编号(例如“
Project-123编辑的演示文件”)提交到gitlab中,我就有一个jenkins钩子触发构建。我有JENKINS的Jira插件,并通过工作流操作使用Progress
JIRA问题。我有一个两部分的问题:

  1. 我用于搜索问题的JQL是:project=PROJ and status="Build Started" and updated >= "-15m" 我的工作流程操作是Jenkins Build Success 。但是,如果我有多个构建正在运行,则无论第二个构建如何结束,第一个构建成功完成时,它将把两个问题都转换为BUILD SUCCESSFUL。我想要一种方法,可以使用jenkins在jenkins的SCM更改中的提交消息来填充$ ISSUE_ID,以便我可以指定要转换的问题。
  2. 如果构建失败,则以不同的方式推进工作流程。

阅读 458

收藏
2020-07-25

共1个答案

一尘不染

我最终使用了变通方法。这是我解决每个问题的方法:1-我编写了一个Shell脚本,该脚本通过请求api进行更改。然后,我编写了一个正则表达式以从提交消息中取出问题密钥。我只提取了第一个问题的参考。我使用jenkins中的envinject插件将问题ID注入为构建属性,以供以后由工作流程操作步骤进行JIRA插件的进度问题使用。这是shell脚本。

xmlfile=$(curl -s "http://*********:8080/jenkins/job/***/${BUILD_NUMBER}/api/xml?wrapper=changes&xpath=//changeSet//comment")

re="PRJ-([0-9])*"

if [[ $xmlfile =~ $re ]];

  then issueKey=${BASH_REMATCH[0]}

fi

re2="([0-9])+"

if [[ $issueKey =~ $re2 ]];

  then echo ISSUE_ID=${BASH_REMATCH[0]} > env.properties

fi

在jira pugin中,我使用issueKey = PRJ- $ ISSUE_ID作为具有状态的jql。

2-对于这一部分,我使用TriggerParametrizedBuild插件并在当前构建失败或不稳定的情况下开始构建。这个新版本仅将工作流程退回到“进行中”

2020-07-25