我使用 Gitlab 进行源代码管理,使用 jenkins 进行 CI 作业,使用 JIRA 进行问题跟踪。
一旦我在 gitlab 中提交了一个问题号,例如“Project-123 编辑的演示文件”,我就有一个触发构建的 jenkins 钩子。
我有 JENKINS 的 Jira 插件,并通过工作流程操作使用 Progress JIRA 问题。
我有一个由两部分组成的问题:
- 我用于搜索问题的 JQL 是:
project=PROJ and status="Build Started" and updated >= "-15m"
我的工作流程操作是 Jenkins Build is Success。
但是,如果我正在运行多个构建,当第一个构建成功完成时,无论第二个构建如何结束,它都会将两个问题都转换为“构建成功”。
我想要一种可以使用 jira 插件的 jenkins SCM 更改中的提交消息来填充 $ISSUE_ID 的方法,以便我可以指定要转换的问题。
- 以不同的方式推进工作流程,构建失败。
我最终使用了一种解决方法。以下是我解决每个问题的方法:
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 中,我使用 issuesKey=PRJ-$ISSUE_ID 作为我的 jql 状态。
2-对于这一部分,我使用了触发参数化构建插件并在当前构建失败或不稳定时启动构建。这个新版本仅将工作流程恢复到“进行中”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)