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

求可定时检查Jira状态、审批通过后执行terraform apply的Python脚本

实现思路
  • 按固定间隔调用Jira REST API拉取指定工单的状态
  • 检测到状态变为已审批时终止轮询,执行terraform apply命令
  • 内置基础异常捕获逻辑,避免网络波动、接口报错导致脚本直接退出
前置依赖

执行脚本前需要先安装requests依赖库:
pip install requests

完整实现代码
import time
import requests
import subprocess

# -------------------------- 配置项 请根据实际场景修改 --------------------------
JIRA_SERVER = "https://server-url"  # 你的Jira服务地址
JIRA_ISSUE_ID = "JRA-1"  # 需要监控的工单号
JIRA_USER = "username"  # Jira登录账号
JIRA_PWD = "password"  # Jira登录密码/API Token(SSO登录需用API Token)
APPROVED_STATUS_NAME = "已审批"  # Jira里配置的审批通过状态名称,需完全匹配
CHECK_INTERVAL = 60  # 轮询间隔,单位秒,默认1分钟
AFTER_APPROVE_CMD = "terraform apply"  # 审批通过后要执行的命令
# -----------------------------------------------------------------------------

def query_jira_status():
    api_url = f"{JIRA_SERVER}/rest/api/2/issue/{JIRA_ISSUE_ID}?fields=status"
    headers = {"Content-Type": "application/json"}
    try:
        response = requests.get(
            url=api_url,
            auth=(JIRA_USER, JIRA_PWD),
            headers=headers,
            timeout=15
        )
        response.raise_for_status()
        return response.json()["fields"]["status"]["name"].strip()
    except Exception as err:
        print(f"Jira查询失败,错误:{str(err)},等待下次重试")
        return None

if __name__ == "__main__":
    print(f"开始监控工单 {JIRA_ISSUE_ID} 状态,轮询间隔{CHECK_INTERVAL}秒")
    while True:
        current_status = query_jira_status()
        if current_status == APPROVED_STATUS_NAME:
            print("检测到工单已审批,开始执行后续命令")
            subprocess.run(AFTER_APPROVE_CMD, shell=True, check=True)
            break
        if current_status:
            print(f"当前工单状态:{current_status},继续等待审批")
        time.sleep(CHECK_INTERVAL)
使用注意事项
  • 请确认APPROVED_STATUS_NAME的值和Jira后台配置的审批通过状态完全一致,大小写、特殊符号、空格都不能有差异
  • 如果需要terraform自动确认执行,可将AFTER_APPROVE_CMD修改为terraform apply -auto-approve
  • Jira如果开启了二次校验或SSO登录,不要填账号密码,需替换为Jira个人设置里生成的API Token

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:15:07