I'm trying to set up a CI/CD GitLab Pipeline with feature branches with various stages of testing, both automated and manual, culminating with an automatic merge to master at the end. I'm struggling with how to keep track of the manual steps (Is issue still work in progress? Is code review complete? Is manual testing complete?).
The way I envision the flow happening is this (issues in question are in bold):
1) Developer opens ticket. This creates a feature branch and merge request at the same time. The merge request is WIP, so not neccesarily being reviewed by anyone until the WIP status is removed.
First problem: how to have a status on the merge request. Gitlab automatically adds WIP to the title. I would really like to find a way to handle state besides mangling the title of the merge request. I think Labels are an option, but am not sure if they are appropriate.
2) Developer checks in code periodically throughout the day into the feature branch. There will be a "mini" pipeline that kicks off unit tests and deploys to a feature environment (kubernetes ephemeral environment: namespace matching branch name).
3) Developer is done iterating and thinks code is ready for deployment. They remove "WIP" status (again, through label or some other way?)
4) CI/CD pipeline is kicked off. Not WIP anymore, so comprehensive unit tests, container scanning, security scanning, perf tests etc are automatically kicked off. In GitLab, this is all part of the "Pipeline". This doesn't merge to master or deploy anywhere yet.
5) Concurrent with the CI/CD automated steps, there will be some manual testing, and some code review.
Second problem: How will these manual steps be checked off in the merge request? Add label "Code Review Complete"? Remove label "Code review needed"? Some version of status check as supported by github? Using gitlab-ci.yaml, I want to be able to check on the status (and whether to continue) periodically through polling or through a callback mechanism of some kind.
6) Once all automated (step 4) and manual (step 5) tests are passed, code is merged to master and deployed to Canary environment.