有以下链接: https://confluence.atlassian.com/bamboo/integrating-builds-with-your-issues-workflow-750396089.html
但这似乎特定于构建何时发生。我们希望在部署发生时执行此操作。但这似乎对构建非常具体。有没有办法在部署时完成更新jira票证?
答案 0 :(得分:0)
是的,你可以。
简短回答:
假设您的构建是通过在提交消息中使用相应的JIRA问题密钥(例如JIRA-123)提交到您的存储库来触发的:
我花了大约15个小时来搞清楚。内置的“构建工作流程”没有转换我的问题状态,我的问题的答案仍然是Atlassian支持。
一些提示(假设您的Bamboo在Linux上运行):
安装“Pre-Post Build Command Runner”
一个。登录Bamboo服务器并导航到Bamboo插件目录:
cd ~/atlassian-bamboo-X.X.X/atlassian-bamboo/WEB-INF/lib
湾下载“Pre-Post Build Command Runner”:
wget https://marketplace-cdn.atlassian.com/files/artifact/3f77baa2-8624-4a80-9b5d-1f6029fc1133/prepost-build-command-5.6.3.jar
℃。重启Bamboo
cd ~/atlassian-bamboo-5.9.7/bin
./stop-bamboo.sh
./start-bamboo.sh
d。转到“Bamboo Administration / Add-ons”并单击“User-installed add-ons”下的“Pre-Post Build Command Runner” 即检查是否已启用所有模块(应该说“启用了X模块的X”)
配置脚本
一个。安装jq
sudo apt-get install jq
湾用于轮询存储库的脚本(假设它是Bitbucket)
#!/bin/bash
message=$(curl --user <bitbucket-username>:<bitbucket-password> https://bitbucket.org/api/1.0/repositories/<bitbucket-username>/<bitbucket-repository>/branches/ | jq '.<branch-name>.message')
message="${message%\"}"
message="${message#\"}"
IFS=' ' read -a array <<< $message
issue=${array[0]}
echo $issue > issue.txt
℃。 JIRA问题转换的脚本
#!/bin/bash
issue=$(<issue.txt)
curl -D- -u <jira-username>:<jira-password> -X POST --data '{"transition":{"id":"<transition-id>"}}' -H "Content-Type: application/json" https://<jira-base-url>/rest/api/latest/issue/$issue/transitions?expand=transitions.fields
rm issue.txt
要记住的事情:
一个。确保两个脚本位于同一位置
湾确保在两个脚本上运行'chmod + X'
℃。确保在提交消息中首先包含JIRA问题密钥,例如'JIRA-123添加了一些东西'
d。确保在Bamboo中禁用并发构建,以防其他开发人员在构建运行时可能将提交推送到存储库
P.S。我故意在构建计划中包括两个阶段,“构建”和“部署”,以便您可以在两个脚本之上构建并添加中间脚本(例如,在“构建”阶段通过时向相应的JIRA问题发布评论或失败)
P.P.S我不得不删除我的脚本以缩短答案,因此可能会出现一些错误。如果脚本不起作用,请随时在评论中告诉我这一点,我会看到有什么坏了。
更新:Atlassian确实回答了我为什么Bamboo不会以下列方式转换我的JIRA问题状态的问题:
我担心基于Bamboo构建结果自动转换问题的功能仅在您拥有Bamboo Cloud + JIRA Cloud时才可用。 我们确实有请求打开以使用Bamboo服务器具有此功能 https://jira.atlassian.com/browse/BAM-1362 和 https://jira.atlassian.com/browse/BAM-14044 我鼓励您对这些请求进行投票或评论,以提高其可见度。