GitLab's release artifact build pipeline uses mirrored repositories, each with a distinct role.
The current state of which services build where is documented here and updated as services migrate.
For the decision rationale behind this architecture, see [ADR 001: Build Mirror Separation](decisions/001_build_mirror_separation.md).
## Repository Mirrors
| Mirror | Location | Purpose |
|--------|----------|---------|
| Canonical | GitLab.com | Public development, merge request workflows, canonical source of truth |
| Security | GitLab.com | Private mirror for pre-disclosure security fixes; source for building and publishing release artifacts for new modular services |
| Build | dev.gitlab.org | Private mirror for building and publishing release artifacts for legacy processes |
## New components: Security mirror
New modular services build and publish release artifacts from the Security mirror on GitLab.com.
GitLab CI runners execute on compute that is separate from GitLab.com application servers.
This dedicated runner fleet, combined with the Security mirror's restricted access model, satisfies the logical separation between build infrastructure and production environments required by SOC 2, FedRAMP, and SLSA L2+.
The Security mirror's activity is independently auditable and its access is scoped separately from the Canonical project's maintainer pool.
## Existing processes: dev.gitlab.org
Legacy tooling and processes continue to run builds through [dev.gitlab.org](https://dev.gitlab.org), a separate GitLab instance.
As the build system evolves - particularly as GitLab moves toward a more modular release architecture - these processes will naturally migrate away from the separate instance.
This is a gradual transition rather than a discrete migration effort.
For operational details on dev.gitlab.org and the build machines, see the [Build team maintenance documentation](build/maintenance/).
@@ -17,7 +17,7 @@ release process (monthly, patch or internal).
## Workflow
1. Stable branches are created when the initial release candidate of a monthly release is tagged.
1. After creation, stable branches are automatically propagated to [security](https://gitlab.com/gitlab-org/security) and [dev](https://dev.gitlab.org/) repositories via repository mirroring.
1. After creation, stable branches are automatically propagated to [security](https://gitlab.com/gitlab-org/security) and [dev](https://dev.gitlab.org/) repositories through repository mirroring.
1. Bug and security fixes are [backported](/handbook/engineering/releases/backports) to stable branches based on the [maintenance policy](https://docs.gitlab.com/policy/maintenance/).
1. Changes backported to stable branches are automatically deployed to [release environments](https://gitlab.com/gitlab-com/gl-infra/release-environments) to guarantee they're compatible with the GitLab version.
1. Patch and internal releases are created from the content of stable branches.
@@ -27,8 +27,13 @@ release process (monthly, patch or internal).
- Stable branch permissions are based on the [maintenance policy](https://docs.gitlab.com/policy/maintenance/). Stable branches associated with
the [maintained versions](https://docs.gitlab.com/policy/maintenance/#maintained-versions) are opened to GitLab maintainers for merging while older stable branches are limited to Release Managers.
- To account for security fixes and [release environments](https://gitlab.com/gitlab-com/gl-infra/release-environments), security repositories represent the SSOT for stable branches.
- Tests on stable branches are the same on canonical, security and dev repositories. With the exception
of release environments that are only available on the GitLab security repository.
- Tests on stable branches are the same on canonical and security repositories, with the exception of release environments that are only available on the GitLab security repository.
## Build Infrastructure
Release artifacts are built from mirrored repositories using dedicated CI runner infrastructure.
For a full description of which mirrors exist, what builds where, and the rationale behind this architecture, see the