如何通过Python Jira库修改Issue的Resolution?报错求助
如何通过Python Jira库更新Issue的Resolution?
我尝试通过Python Jira库更新Issue的Resolution,但出现如下错误:
>>> jp=JiraProject('VCART', 'https://jira.microhard.com') >>> _issue=jp.issue('VCART-4046') >>> _issue.update({'Resolution': {'name': 'Done'}}) Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/local/lib/python3.6/dist-packages/jira/resources.py", line 485, in update super(Issue, self).update(async_=async_, jira=jira, notify=notify, fields=data) File "/usr/local/lib/python3.6/dist-packages/jira/resources.py", line 233, in update self.self + querystring, data=data) File "/usr/local/lib/python3.6/dist-packages/jira/resilientsession.py", line 157, in put return self.__verb('PUT', url, **kwargs) File "/usr/local/lib/python3.6/dist-packages/jira/resilientsession.py", line 147, in __verb raise_on_error(response, verb=verb, **kwargs) File "/usr/local/lib/python3.6/dist-packages/jira/resilientsession.py", line 57, in raise_on_error r.status_code, error, r.url, request=request, response=r, **kwargs) jira.exceptions.JIRAError: JiraError HTTP 400 url: https://jira.microhard.com/rest/api/2/issue/4559852 text: Field 'Resolution' cannot be set. It is not on the appropriate screen, or unknown. response headers = {'Content-Type': 'application/json;charset=UTF-8', 'Transfer-Encoding': 'chunked', 'Connection': 'close', 'X-AREQUESTID': '407x17688874x7', 'X-ASESSIONID': '1l8dfq5', 'X-ANODEID': 'jira1prda2', 'Referrer-Policy': 'strict-origin-when-cross-origin', 'X-XSS-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Strict-Transport-Security': 'max-age=31536000', 'X-Seraph-LoginReason': 'OK', 'X-RateLimit-Limit': '500', 'X-RateLimit-Remaining': '499', 'X-RateLimit-FillRate': '40', 'X-RateLimit-Interval-Seconds': '5', 'Retry-After': '0', 'X-AUSERNAME': 'buildaudit', 'Cache-Control': 'no-cache, no-store, no-transform', 'Content-Encoding': 'gzip', 'Vary': 'User-Agent', 'Date': 'Wed, 30 Nov 2022 14:47:38 GMT'} response text = {"errorMessages":[],"errors":{"Resolution":"Field 'Resolution' cannot be set. It is not on the appropriate screen, or unknown."}}
以下写法同样无法生效:
_issue.update({"fields": {"resolution": {"name": "Closed"}}})
当前Issue状态为Reopened。
解决方法
检查屏幕配置
Resolution字段必须出现在Issue当前状态(Reopened)对应的编辑屏幕上。联系Jira管理员,确认该字段已添加到对应屏幕,否则无法通过API直接更新。通过工作流转换设置Resolution
Jira的Resolution字段通常和工作流状态绑定,直接更新字段可能违反工作流规则。正确做法是执行工作流转换,同时设置Resolution:# 获取当前Issue可用的工作流转换 transitions = _issue.transitions() # 找到目标状态的转换ID(比如转为Done) target_transition_id = next(t["id"] for t in transitions if t["name"] == "Done") # 执行转换并设置Resolution _issue.transition(target_transition_id, fields={"resolution": {"name": "Done"}})确认字段格式正确性
Jira API中字段名是小写的resolution,如果要直接更新字段(需确保屏幕配置正确),格式应为:_issue.update(fields={"resolution": {"name": "Done"}})
内容的提问来源于stack exchange,提问作者Zhong PengQun
相关产品推荐
相关产品推荐

