Overview of the auto-deploy pipelines
The auto-deploy process relies on four pipelines schedules:
auto-deploy:prepare
auto-deploy:tag
auto-deploy:pick
auto-deploy:cleanup
The code definition of these rake tasks can be found on release-tools, particularly
on the auto-deploy.rake
file.
auto-deploy:prepare
Creates auto-deploy branches on GitLab, Omnibus, CNG and GitLab Chart security repositories. The branches are created on security repositories to account for security releases.
To ensure the commits don’t overlap, the branches use the previous auto-deploy tag as the minimum commit. Several auto-deploy branches are created throughout a day, the schedule is set at the discretion of release managers at the beginning of their shift. The current schedule can be seen on the releases documentation.
As an aside, this task also creates the monthly release issue if one can’t be found.
auto-deploy:tag
Executed every 15 minutes, this task uses the latest green commit from the current auto-deploy branches to build an auto-deploy package. Once a package is tagged, a coordinated pipeline is created and the deployment to our different environment starts.
When enabled, the auto_deploy_tag_latest
feature flag modifies this task behavior
by forcing the auto-deploy package to be built using the latest commit, regardless of
their status, this behavior is useful for speedy deployments. This feature flag is
disabled by default.
auto-deploy:pick
Executed every 30 minutes, this task searches for GitLab, Omnibus, CNG, and GitLab
Chart merge requests labeled with Pick into auto-deploy
, if found, it’ll validate
they have a severity label added and then it’ll pick them into the respective auto-deploy
branch. For more details, see our Releases handbook page.
auto-deploy:cleanup
Auto-deploy branches are kept for seven days, branches older than that are deleted by this task that its executed every day at 12UTC.