我们可以在 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 票证吗?

是的,你可以。

简答:

  1. 在 Bamboo (https://marketplace.atlassian.com/plugins/com.sysbliss.bamboo.plugins.prepost-build-command/server/overview) 上安装 'Pre-Post Build Command Runner'
  2. 为您的构建添加两个阶段:一个构建阶段和一个 'deployment' 阶段
  3. 将作业添加到 'build' 阶段,其中包含将要部署到工件的文件打包的任务
  4. 将作业添加到 'deployment' 阶段,其中包含将工件发送到您选择的服务器并在那里解压缩的任务
  5. 打开 JIRA,转到您的工作流程,以文本模式打开所需的工作流程,然后 note/write 向下查看相应的转换 ID(您可以在转换名称右侧的括号中找到它)

假设您的构建是通过提交到您的存储库并在提交消息中使用相应的 JIRA 问题键(例如 JIRA-123)触发的:

  1. 编写一个脚本来轮询您的存储库,获取所需分支中最后一次提交的消息,从中提取相应的 JIRA 问题密钥并将其记录在 .txt 文件中。使用不同的名称将其保存在您的 Bamboo 服务器上。
  2. 编写一个脚本来读取您的 .txt 文件,从那里提取问题密钥,向 JIRA API 发送一个 POST 请求以及相应的转换 ID 和问题密钥。使用不同的名称将其保存在您的 Bamboo 服务器上。
  3. 转到您的 Bamboo 构建配置,打开 'build' 阶段,打开 'miscellaneous' 选项卡,在 'Pre Build Commands' 的 'Command' 行中输入第一个脚本的位置=] 部分,勾选 'Run on Bamboo Server' 并按 'Save'。
  4. 转到您的 Bamboo 构建配置,打开 'deployment' 阶段,打开 'miscellaneous' 选项卡,在 [=110] 的 'Success Command' 行中输入第二个脚本的位置=] 部分,勾选 'Run on Bamboo Server' 并按 'Save'。
  5. 确保 Bamboo 和 JIRA 都经过身份验证以相互干扰。您可以在 'Application links'.
  6. 下的 JIRA 和 Bamboo 设置中设置凭据

我花了大约 15 个小时才弄明白。内置的 'Builds workflow' 没有转换我的问题状态,我对 Atlassian 支持的问题的答案仍然悬而未决。

一些提示(假设您的 Bamboo 运行s 在 Linux 上):

  1. 正在安装'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')

  2. 配置脚本

    一个。安装 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
    
  3. 注意事项:

    一个。确保两个脚本都在同一位置

    b。确保在两个脚本上 运行 'chmod +X '

    c。确保 JIRA 问题密钥首先包含在提交消息中,例如'JIRA-123 added some stuff'

    d。确保在 Bamboo 中禁用并发构建,以防其他开发人员有可能在您的构建 运行ning

  4. 时将提交推送到存储库

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-1362https://jira.atlassian.com/browse/BAM-14044 我鼓励您对这些请求进行投票或发表评论,以提高它们的知名度。