我们可以在竹子部署上更改 jira 票的状态吗?不在竹制建筑上
Posted
技术标签:
【中文标题】我们可以在竹子部署上更改 jira 票的状态吗?不在竹制建筑上【英文标题】:Can we change status of jira ticket on bamboo deploy. Not on bamboo build 【发布时间】:2015-09-14 18:15:37 【问题描述】:有以下链接: https://confluence.atlassian.com/bamboo/integrating-builds-with-your-issues-workflow-750396089.html
但这似乎特定于构建发生的时间。我们希望在部署发生时执行此操作。但这似乎非常特定于构建。有什么方法可以在部署时更新 jira 票证吗?
【问题讨论】:
【参考方案1】:是的,你可以。
简答:
-
在 Bamboo (https://marketplace.atlassian.com/plugins/com.sysbliss.bamboo.plugins.prepost-build-command/server/overview) 上安装“Pre-Post Build Command Runner”
为您的构建添加两个阶段:“构建阶段”和“部署”阶段
将作业添加到“构建”阶段,其中包含将要部署到工件的文件打包的任务
将作业添加到“部署”阶段,其中包含将工件发送到您选择的服务器并在那里解压的任务
打开 JIRA,转到您的工作流程,以文本模式打开所需的工作流程并记下/记下相应的转换 ID(您可以在转换名称右侧的括号中找到它)
假设您的构建是通过在提交消息中使用相应的 JIRA 问题密钥(例如 JIRA-123)提交到您的存储库来触发的:
-
编写一个脚本来轮询您的存储库,获取所需分支中最后一次提交的消息,从中提取相应的 JIRA 问题密钥并将其写入 .txt 文件中。以不同的名称将其保存在您的 Bamboo 服务器上。
编写一个脚本来读取您的 .txt 文件,从那里提取问题密钥,向 JIRA API 发送一个带有相应转换 ID 和问题密钥的 POST 请求。以不同的名称将其保存在您的 Bamboo 服务器上。
转到您的 Bamboo 构建配置,打开“构建”阶段,打开“杂项”选项卡,在“预构建命令”部分的“命令”行中输入第一个脚本的位置,勾选“运行在Bamboo Server”,然后按“保存”。
转到您的 Bamboo 构建配置,打开“部署”阶段,打开“杂项”选项卡,在“构建后命令”部分的“成功命令”行中输入第二个脚本的位置,勾选“运行”在 Bamboo Server 上”,然后按“保存”。
确保 Bamboo 和 JIRA 都经过身份验证以相互混淆。您可以在“应用程序链接”下的 JIRA 和 Bamboo 设置中设置凭据。
我花了大约 15 个小时才弄明白。内置的“构建工作流程”没有转换我的问题状态,我对 Atlassian 支持的问题的答案仍然悬而未决。
一些提示(假设您的 Bamboo 在 Linux 上运行):
安装“Pre-Post Build Command Runner”
一个。登录到您的 Bamboo 服务器并导航到 Bamboo 插件目录:
cd ~/atlassian-bamboo-X.X.X/atlassian-bamboo/WEB-INF/lib
b.下载“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
c。重启 Bamboo
cd ~/atlassian-bamboo-5.9.7/bin
./stop-bamboo.sh
./start-bamboo.sh
d。转到“Bamboo Administration/Add-ons”并单击“用户安装的附加组件”下的“Pre-Post Build Command Runner” e.检查其所有模块是否已启用(应显示“X of X modules enabled”)
配置脚本
一个。安装jq
sudo apt-get install jq
b.轮询存储库的脚本(假设是 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
c。 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
注意事项:
一个。确保两个脚本位于同一位置
b.确保在两个脚本上运行“chmod +X”
c。确保 JIRA 问题密钥首先包含在提交消息中,例如'JIRA-123 添加了一些东西'
d。确保在 Bamboo 中禁用并发构建,以防其他开发人员可能会在您的构建运行时将提交推送到存储库
附:我故意在构建计划中包含两个阶段,“构建”和“部署”,以便您可以在两个脚本之上构建并添加中间脚本(例如,在“构建”阶段通过时对相应的 JIRA 问题发表评论或失败)
P.P.S 我不得不精简我的脚本以缩短这个答案,所以可能会有一些错误。如果脚本不起作用,请随时在 cmets 中告诉我,我会看看有什么问题。
更新:Atlassian 确实回答了我关于为什么 Bamboo 不会通过以下方式转换我的 JIRA 使用状态的问题:
恐怕只有当您拥有 Bamboo Cloud + JIRA Cloud 时,才能使用基于 Bamboo 构建结果自动转换问题的功能。 我们确实有请求在 Bamboo 服务器上提供此功能 https://jira.atlassian.com/browse/BAM-1362 和 https://jira.atlassian.com/browse/BAM-14044 我鼓励您对这些请求进行投票或评论,以提高其知名度。
【讨论】:
以上是关于我们可以在竹子部署上更改 jira 票的状态吗?不在竹制建筑上的主要内容,如果未能解决你的问题,请参考以下文章