如何通过代码移除Jira工单中的指定组件(如WF-EDA)
移除Jira工单指定组件的代码实现
要移除Jira工单里的指定组件(比如你提到的WF-EDA),最直接的方式是调用Jira的REST API来实现,下面是具体步骤和代码示例:
准备工作
- 你的Jira域名(比如
your-domain.atlassian.net) - 账号邮箱和API令牌(在Jira个人设置中生成)
- 目标工单的KEY(比如
PROJ-123) - 要移除的组件名称(这里是
WF-EDA)
实现逻辑
Jira更新组件是覆盖式操作,不能直接删除单个组件,得先拿到工单现有的所有组件,排除要移除的那个后,再把剩下的组件重新提交给工单。
Python代码示例
import requests from requests.auth import HTTPBasicAuth # 替换成你的实际信息 JIRA_DOMAIN = "your-domain.atlassian.net" EMAIL = "your-email@example.com" API_TOKEN = "your-api-token" ISSUE_KEY = "PROJ-123" COMPONENT_TO_REMOVE = "WF-EDA" # 1. 获取工单当前的组件列表 get_url = f"https://{JIRA_DOMAIN}/rest/api/3/issue/{ISSUE_KEY}" get_headers = {"Accept": "application/json"} response = requests.get( get_url, headers=get_headers, auth=HTTPBasicAuth(EMAIL, API_TOKEN) ) if response.status_code != 200: print(f"获取工单信息失败: {response.text}") exit() issue_data = response.json() current_components = issue_data["fields"]["components"] # 过滤掉要移除的组件 new_components = [comp for comp in current_components if comp["name"] != COMPONENT_TO_REMOVE] # 2. 更新工单组件 update_url = f"https://{JIRA_DOMAIN}/rest/api/3/issue/{ISSUE_KEY}" update_headers = { "Accept": "application/json", "Content-Type": "application/json" } payload = { "fields": { "components": new_components } } update_response = requests.put( update_url, json=payload, headers=update_headers, auth=HTTPBasicAuth(EMAIL, API_TOKEN) ) if update_response.status_code == 204: print(f"成功移除组件 {COMPONENT_TO_REMOVE}") else: print(f"更新失败: {update_response.text}")
注意事项
- 如果工单里本来就没有
WF-EDA组件,代码会直接跳过更新,不会报错 - 确保你的账号拥有修改工单组件的权限
- API令牌要妥善保管,不要泄露到公共代码仓库中
内容的提问来源于stack exchange,提问作者منى
相关产品推荐
相关产品推荐

