我们可以改变竹子部署的jira票的状态。不是竹子建造

时间:2015-09-14 18:15:38

标签: jira bamboo

有以下链接: https://confluence.atlassian.com/bamboo/integrating-builds-with-your-issues-workflow-750396089.html

但这似乎特定于构建何时发生。我们希望在部署发生时执行此操作。但这似乎对构建非常具体。有没有办法在部署时完成更新jira票证?

1 个答案:

答案 0 :(得分:0)

是的,你可以。

简短回答:

  1. 在Bamboo上安装'Pre-Post Build Command Runner'(https://marketplace.atlassian.com/plugins/com.sysbliss.bamboo.plugins.prepost-build-command/server/overview
  2. 为您的构建添加两个阶段:'构建阶段和'部署'阶段
  3. 将作业添加到“构建”阶段,其中包含将要部署的文件打包到工件的任务
  4. 将作业添加到“部署”阶段,其中包含将工件发送到您选择的服务器并将其解压缩到那里的任务
  5. 打开JIRA,转到您的工作流程,在文本模式下打开所需的工作流程并记下/记下相应的转换ID(您可以在转换名称右侧的括号中找到它)
  6. 假设您的构建是通过在提交消息中使用相应的JIRA问题密钥(例如JIRA-123)提交到您的存储库来触发的:

    1. 编写一个轮询您的存储库的脚本,获取所需分支中最后一次提交的消息,从中提取相应的JIRA问题密钥并将其写入.txt文件中。使用不同的名称将其保存在Bamboo服务器上。
    2. 编写一个读取.txt文件的脚本,从那里提取问题密钥,向具有相应转换ID和问题密钥的JIRA API发送POST请求。使用不同的名称将其保存在Bamboo服务器上。
    3. 转到Bamboo构建配置,打开“构建”阶段,打开“杂项”选项卡,在“预构建命令”部分的“命令”行中输入第一个脚本的位置,勾选“运行” Bamboo Server'并按'保存'。
    4. 转到Bamboo构建配置,打开“部署”阶段,打开“杂项”选项卡,在“后构建命令”部分的“成功命令”行中输入第二个脚本的位置,勾选“运行”在Bamboo Server'上按“保存”。
    5. 确保Bamboo和JIRA都经过身份验证,以便彼此混淆。您可以在“应用程序链接”下的JIRA和Bamboo设置中设置凭据。
    6. 我花了大约15个小时来搞清楚。内置的“构建工作流程”没有转换我的问题状态,我的问题的答案仍然是Atlassian支持。

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

      1. 安装“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”)

      2. 配置脚本

        一个。安装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
        
      3. 要记住的事情:

        一个。确保两个脚本位于同一位置

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

        ℃。确保在提交消息中首先包含JIRA问题密钥,例如'JIRA-123添加了一些东西'

        d。确保在Bamboo中禁用并发构建,以防其他开发人员在构建运行时可能将提交推送到存储库

      4. P.S。我故意在构建计划中包括两个阶段,“构建”和“部署”,以便您可以在两个脚本之上构建并添加中间脚本(例如,在“构建”阶段通过时向相应的JIRA问题发布评论或失败)

        P.P.S我不得不删除我的脚本以缩短答案,因此可能会出现一些错误。如果脚本不起作用,请随时在评论中告诉我这一点,我会看到有什么坏了。

        更新:Atlassian确实回答了我为什么Bamboo不会以下列方式转换我的JIRA问题状态的问题:

        我担心基于Bamboo构建结果自动转换问题的功能仅在您拥有Bamboo Cloud + JIRA Cloud时才可用。 我们确实有请求打开以使用Bamboo服务器具有此功能 https://jira.atlassian.com/browse/BAM-1362https://jira.atlassian.com/browse/BAM-14044 我鼓励您对这些请求进行投票或评论,以提高其可见度。