The current fixes bot at qt/qtqa/scripts/jira/jira-bug-closer has developed a number of issues which are too difficult to rectify in the current architecture.
- The fixed-version field is rarely set correctly. Release notes for a new version contain vastly more Jira issues than a fixed-version filter in Jira shows. This bug occurs silently and it is unclear why the bot does not choose a fixed version when closing an issue.
- The commits field is updated with duplicated shas of tqtc/* shadow repositories when a change was originally merged in the corresponding public repo. This issue requires rearchitecting to implement a system of queries and checks to avoid duplication.
- After a change is closed, the commits field in Jira gets replaced instead of updated if a follow-up cherry-pick attempts to add to the commits field.
- The bot occasionally leaks file handles, presumably from git when operating on local repos.
- The bot contributes to congestion on codereview.qt-project.org when it clones or updates local repositories (code.qt.io cannot be used since access to tqtc repos is needed). This should be rectified by using rate-limited REST calls to gerrit instead of local repo clones.
- The bot may use an invalid Jira Issue Transition on projects which do not use the historical transition name "Close"
The new bot should:
- Utilize gerrit webhooks for incoming event stream data.
- Utilize gerrit/Jira queries to identify missed work
- Close issues where the corresponding change in gerrit has a commit message which includes the footer "Fixes:"
- Reliably identify the target version of a merged change in gerrit and update the "Fix Versions" field in Jira.
- Update the "commits" field of a Jira ticket with the merged commit sha of a given gerrit change.
- Intelligently truncate commits and fix version field data as necessary to fit in the Jira Max Character Limit (255) for custom fields.
- Dynamically identify valid state transitions for a given Jira Project and use the appropriate transition to close an issue.