Process of deploying to canary and production after staging daily deploy
In #161 (closed) we are looking to create daily deploy to staging.gitlab.com. With increased use of canary in issues #140 (closed) and #156 (closed), we are going to have a process for promoting to canary and production services
As current staging environment is going to be deployed daily, and promotion to production environments is going to follow deployments on staging, in case of an issue we need to have a place where we will deploy a deployment artifact with the fix.
The graph below should give a bit more context:
In ideal case, Day 1,3,4 packages are deployed to staging.gitlab.com. The next day they are promoted to canary and the day after to production.
Day 2 deployment is the interesting part. Day 2 deployment went fine on staging.gitlab.com and we found no issues so the deployment is promoted to canary. On canary an issue is found that could affect the stability or larger user experience so we can't promote the package to production.
The idea here would be to have developers create a fix targeting the specific sha of a component that is currently deployed on canary. When the fix is ready, we would create the deploy artifact that contains everything that was in Day 2 + the fix. With this ready, we would need to deploy to a new (non-production) environment to verify the fix. When the fix is verified, it gets promoted to canary and then subsequently to production in case no issues are found.
For this to happen, we need a new non-production environment similar to staging and we also need component versions exposed #184 (closed).