Advancing issues automatically in issue boards

Background and problem

  • GitLab issues and merge requests are purposely designed to have very few states (open, closed, locked, deleted, merged). We do not want to change that since doing so increase complexity and sacrifices flexibility. We don't plan on changing that design in the short or medium term.
  • However, merge request "attributes" do allow users to do code review (WIP), approvals, and CI/CD. These aren't "states" on the merge request, but they do give merge requests more expressive power. We plan on expanding these in the future, leveraging the merge request widget as the main presentation layer. They may block a merge request from being merged, but they are not "stages".
  • GitLab issues do have stages, but we have not implemented them as "native" stages/states. Rather, we are using labels in issue boards to provide the concept of stages as what we call lists. The benefit is highly flexible and configurable stages.
  • Issue boards allow users to manually move issues between different lists, such as "To Do", "In Dev", "In QA", etc. However, there is no automated way to move issues between lists.
  • In contrast, GitLab can currently close an issue automatically when merging a merge request signals it, i.e: https://docs.gitlab.com/ce/user/project/issues/automatic_issue_closing.html.
  • We need a similar automated mechanism to solve this problem for the additional stages/lists granularity of issues, which is essentially expanding the "state" space of issues. We need a way to allow users to advance/move an issue forward in the board, in the context of merging a merge request. But it shouldn't go all the way to the "Closed" state.
  • Slash commands is one solution, but doesn't solve the entire problem space. https://gitlab.com/gitlab-org/gitlab-ce/issues/28457.

Proposed solution

  • Similar to https://docs.gitlab.com/ce/user/project/issues/automatic_issue_closing.html, provide a mechanism to signal moving an issue to another stage/list.
  • Signal should be in commit messages and in the merge request description, similar to above.
  • It could be something like Moves #1234 to ~"Ready for UAT"
  • The effect of these actions would be as if you moved the issue inside the issue board UI. So that means labels are removed and added consistently.
  • We likely need some presentation UI to indicate that a particular issue would be "advanced" if the associated merge request is closed. It's not clear whether that UI should be on the issue itself, on the issue board, or both.
Edited Sep 02, 2020 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading