我们可以在竹子部署上更改 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 票的状态吗?不在竹制建筑上的主要内容,如果未能解决你的问题,请参考以下文章

创建数字状态板的工具

如何从 Jira 中的状态更改触发 Jenkins 作业

如何将 Jira 与 GitLab CE 集成?

jira中的复杂过滤器

Jira 和 Confluence 企业最佳部署方式

“错误 MSB1009:项目文件不存在。”使用竹子部署 asp.net 项目时