如何在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
相关产品推荐
相关产品推荐

