What’s GitLab?
GitLab is a web-based DevOps lifecycle tool that provides a Git-repository manager providing wiki, issue-tracking and continuous integration/continuous deployment pipeline features, using an open-source license, developed by GitLab Inc.
(From https://en.wikipedia.org/wiki/GitLab)
GitLab Stages
Normally, a pipeline for code deployment consists of the following stages:
1. build
2. deploy
3. systemtest
Each GitLab stage uses when: on_success as the default policy meaning that executing the current job only when all jobs from prior stages succeed. 1
However, sometimes, our commit might fail the systemtest stage after the pipeline successfully deployed the system in the pior stage. Under such scenarios, that’s when the rollback stage should kicks in.
Rollback Stage
Briefly speaking, the rollback stage should be able to handle the systemtest stage scenario and rollback to the previous deployment. Therefore, we can set up the rollback stage as follows:
1. deploy
2. systemtest
3. rollback
And meanwhile, the rollback stage should use when: on_failure as its policy:
rollback:
when: on_failure
script:
# do rollback job
to be continued…