You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DevOps中通过YAML流水线将发布关联至Jira?

用YAML流水线实现向Jira上报部署状态

要实现部署到acceptance环境后向Jira上报状态,核心是在YAML流水线中新增专门的阶段,通过调用Jira REST API完成状态更新,具体步骤如下:

1. 配置Jira认证信息

在流水线的环境变量中配置Jira账号和API Token(避免硬编码):

  • JIRA_USER: 你的Jira登录邮箱
  • JIRA_API_TOKEN: 在Jira个人设置中生成的API Token

2. 编写状态上报脚本

使用curl调用Jira的状态转换API更新工单状态,示例脚本如下:

# 从流水线参数或提交信息中获取关联的Jira工单号
JIRA_TICKET="PROJ-123"
# 对应"已部署到验收环境"的状态转换ID(需根据你的Jira工作流实际配置确定)
TRANSITION_ID="41"

curl --request POST \
  --url "https://你的Jira域名.atlassian.net/rest/api/3/issue/$JIRA_TICKET/transitions" \
  --user "$JIRA_USER:$JIRA_API_TOKEN" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --data '{
    "transition": {
      "id": "'"$TRANSITION_ID"'"
    }
  }'

提示:TRANSITION_ID需匹配你Jira项目工作流中对应状态的转换ID,可通过Jira API查询工作流配置获取。

3. 在YAML流水线中添加上报阶段

将上报脚本整合到流水线阶段中,放在部署到acceptance环境的阶段之后,示例YAML如下:

stages:
  - stage: Deploy_to_Acceptance
    jobs:
      - job: Deploy
        steps:
          - script: |
              # 部署到acceptance环境的执行脚本
              echo "开始部署到acceptance环境..."
            displayName: "部署到验收环境"

  - stage: Report_Status_to_Jira
    dependsOn: Deploy_to_Acceptance
    condition: succeeded()  # 仅当部署成功时触发上报
    jobs:
      - job: Report
        steps:
          - script: |
              JIRA_TICKET="$(JIRA_TICKET)"
              TRANSITION_ID="41"
              curl --request POST \
                --url "https://你的Jira域名.atlassian.net/rest/api/3/issue/$JIRA_TICKET/transitions" \
                --user "$JIRA_USER:$JIRA_API_TOKEN" \
                --header "Accept: application/json" \
                --header "Content-Type: application/json" \
                --data '{
                  "transition": {
                    "id": "'"$TRANSITION_ID"'"
                  }
                }'
            displayName: "向Jira上报部署状态"
            env:
              JIRA_USER: $(JIRA_USER)
              JIRA_API_TOKEN: $(JIRA_API_TOKEN)

额外优化点

  • 可通过流水线参数或代码提交信息动态提取Jira工单号,无需硬编码。
  • 若需上报部署失败状态,可新增一个阶段,设置condition: failed()并使用对应失败状态的TRANSITION_ID。

内容的提问来源于stack exchange,提问作者Enrico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:57:24