我使用Gitlab进行源代码管理,使用jenkins进行CI作业,使用JIRA进行问题跟踪。
一旦我在gitlab中提交了一个问题编号,例如“Project-123编辑的演示文件。”,我就有一个触发构建的jenkins钩子。 我有JENKINS的Jira插件,并通过工作流操作使用Progress JIRA问题。 我有两个问题:
project=PROJ and status="Build Started" and updated >= "-15m"
我的工作流程动作是Jenkins Build is Successful。
但是,如果我有多个构建运行,当第一个构建成功完成时,无论第二个构建如何结束,它都会将这两个问题转换为BUILD SUCCESSFUL。
我想要一种方法,我可以使用jenkins的jira插件的SCM更改中的提交消息填充$ ISSUE_ID,以便我可以指定要转换的问题。答案 0 :(得分: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插件并在当前构建失败或不稳定时启动构建。这个新版本只将工作流程推进到“进行中”