我们可以在 bamboo deploy 上更改 jira ticket 的状态吗?不在竹子上
Can we change status of jira ticket on bamboo deploy. Not on bamboo build
下面是link:
https://confluence.atlassian.com/bamboo/integrating-builds-with-your-issues-workflow-750396089.html
但这似乎特定于构建发生的时间。我们希望在部署发生时执行此操作。但这似乎非常特定于构建。有什么方法可以在部署时完成更新 jira 票证吗?
是的,你可以。
简答:
- 在 Bamboo (https://marketplace.atlassian.com/plugins/com.sysbliss.bamboo.plugins.prepost-build-command/server/overview) 上安装 'Pre-Post Build Command Runner'
- 为您的构建添加两个阶段:一个构建阶段和一个 'deployment' 阶段
- 将作业添加到 'build' 阶段,其中包含将要部署到工件的文件打包的任务
- 将作业添加到 'deployment' 阶段,其中包含将工件发送到您选择的服务器并在那里解压缩的任务
- 打开 JIRA,转到您的工作流程,以文本模式打开所需的工作流程,然后 note/write 向下查看相应的转换 ID(您可以在转换名称右侧的括号中找到它)
假设您的构建是通过提交到您的存储库并在提交消息中使用相应的 JIRA 问题键(例如 JIRA-123)触发的:
- 编写一个脚本来轮询您的存储库,获取所需分支中最后一次提交的消息,从中提取相应的 JIRA 问题密钥并将其记录在 .txt 文件中。使用不同的名称将其保存在您的 Bamboo 服务器上。
- 编写一个脚本来读取您的 .txt 文件,从那里提取问题密钥,向 JIRA API 发送一个 POST 请求以及相应的转换 ID 和问题密钥。使用不同的名称将其保存在您的 Bamboo 服务器上。
- 转到您的 Bamboo 构建配置,打开 'build' 阶段,打开 'miscellaneous' 选项卡,在 'Pre Build Commands' 的 'Command' 行中输入第一个脚本的位置=] 部分,勾选 'Run on Bamboo Server' 并按 'Save'。
- 转到您的 Bamboo 构建配置,打开 'deployment' 阶段,打开 'miscellaneous' 选项卡,在 [=110] 的 'Success Command' 行中输入第二个脚本的位置=] 部分,勾选 'Run on Bamboo Server' 并按 'Save'。
- 确保 Bamboo 和 JIRA 都经过身份验证以相互干扰。您可以在 'Application links'.
下的 JIRA 和 Bamboo 设置中设置凭据
我花了大约 15 个小时才弄明白。内置的 'Builds workflow' 没有转换我的问题状态,我对 Atlassian 支持的问题的答案仍然悬而未决。
一些提示(假设您的 Bamboo 运行s 在 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' 并单击 'User-installed 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 added some stuff'
d。确保在 Bamboo 中禁用并发构建,以防其他开发人员有可能在您的构建 运行ning
时将提交推送到存储库
P.S。我有意在构建计划中包括了两个阶段,'Build' 和 'Deployment',这样您就可以在这两个脚本之上构建并添加中间脚本(例如 post 对相应 JIRA 问题的评论当 'Build' 阶段通过或失败时)
P.P.S 我不得不精简我的脚本以使这个答案更短,所以可能会有一些错误。如果脚本不起作用,请随时在评论中告诉我,我会看看有什么问题。
更新:Atlassian 确实回答了我为什么 Bamboo 不会通过以下方式转换我的 JIRA 使用状态的问题:
恐怕只有当您拥有 Bamboo Cloud + JIRA Cloud 时才能使用基于 Bamboo 构建结果自动转换问题的功能。
我们确实有请求开放 Bamboo 服务器的此功能
https://jira.atlassian.com/browse/BAM-1362
和
https://jira.atlassian.com/browse/BAM-14044
我鼓励您对这些请求进行投票或发表评论,以提高它们的知名度。
下面是link: https://confluence.atlassian.com/bamboo/integrating-builds-with-your-issues-workflow-750396089.html
但这似乎特定于构建发生的时间。我们希望在部署发生时执行此操作。但这似乎非常特定于构建。有什么方法可以在部署时完成更新 jira 票证吗?
是的,你可以。
简答:
- 在 Bamboo (https://marketplace.atlassian.com/plugins/com.sysbliss.bamboo.plugins.prepost-build-command/server/overview) 上安装 'Pre-Post Build Command Runner'
- 为您的构建添加两个阶段:一个构建阶段和一个 'deployment' 阶段
- 将作业添加到 'build' 阶段,其中包含将要部署到工件的文件打包的任务
- 将作业添加到 'deployment' 阶段,其中包含将工件发送到您选择的服务器并在那里解压缩的任务
- 打开 JIRA,转到您的工作流程,以文本模式打开所需的工作流程,然后 note/write 向下查看相应的转换 ID(您可以在转换名称右侧的括号中找到它)
假设您的构建是通过提交到您的存储库并在提交消息中使用相应的 JIRA 问题键(例如 JIRA-123)触发的:
- 编写一个脚本来轮询您的存储库,获取所需分支中最后一次提交的消息,从中提取相应的 JIRA 问题密钥并将其记录在 .txt 文件中。使用不同的名称将其保存在您的 Bamboo 服务器上。
- 编写一个脚本来读取您的 .txt 文件,从那里提取问题密钥,向 JIRA API 发送一个 POST 请求以及相应的转换 ID 和问题密钥。使用不同的名称将其保存在您的 Bamboo 服务器上。
- 转到您的 Bamboo 构建配置,打开 'build' 阶段,打开 'miscellaneous' 选项卡,在 'Pre Build Commands' 的 'Command' 行中输入第一个脚本的位置=] 部分,勾选 'Run on Bamboo Server' 并按 'Save'。
- 转到您的 Bamboo 构建配置,打开 'deployment' 阶段,打开 'miscellaneous' 选项卡,在 [=110] 的 'Success Command' 行中输入第二个脚本的位置=] 部分,勾选 'Run on Bamboo Server' 并按 'Save'。
- 确保 Bamboo 和 JIRA 都经过身份验证以相互干扰。您可以在 'Application links'. 下的 JIRA 和 Bamboo 设置中设置凭据
我花了大约 15 个小时才弄明白。内置的 'Builds workflow' 没有转换我的问题状态,我对 Atlassian 支持的问题的答案仍然悬而未决。
一些提示(假设您的 Bamboo 运行s 在 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' 并单击 'User-installed 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 added some stuff'
d。确保在 Bamboo 中禁用并发构建,以防其他开发人员有可能在您的构建 运行ning
时将提交推送到存储库
P.S。我有意在构建计划中包括了两个阶段,'Build' 和 'Deployment',这样您就可以在这两个脚本之上构建并添加中间脚本(例如 post 对相应 JIRA 问题的评论当 'Build' 阶段通过或失败时)
P.P.S 我不得不精简我的脚本以使这个答案更短,所以可能会有一些错误。如果脚本不起作用,请随时在评论中告诉我,我会看看有什么问题。
更新:Atlassian 确实回答了我为什么 Bamboo 不会通过以下方式转换我的 JIRA 使用状态的问题:
恐怕只有当您拥有 Bamboo Cloud + JIRA Cloud 时才能使用基于 Bamboo 构建结果自动转换问题的功能。 我们确实有请求开放 Bamboo 服务器的此功能 https://jira.atlassian.com/browse/BAM-1362 和 https://jira.atlassian.com/browse/BAM-14044 我鼓励您对这些请求进行投票或发表评论,以提高它们的知名度。