releases/doc/source/reference/release_infra.rst
Thierry Carrez 2fbc89387d Move release team ladder & infra into proper page
The release team involvement ladder and infrastructure primer were
hard to find in CONTRIBUTING.rst. It's better to move them next to
the rest of the team documentation.

Change-Id: I3859ce431711cef5176a3ea34b9433bd06d51447
2021-07-22 15:31:25 +02:00

55 lines
2.5 KiB
ReStructuredText

======================
Release infrastructure
======================
What happens when a release is approved? Release infrastructure is divided
into two steps, triggered by different, but related events.
The first step is triggered by the release request being merged into the
releases repository, starting a series of jobs in the "post" pipeline
of the releases repository::
Release request merged
|
+-------v-----------------------+
Post pipeline (releases repo)
+---+-----------------------+---+
| |
v v
+-------+-------+ +-------+-------+
| tag | | publish-docs |
| | | |
| (pushes tags | | (to releases |
| to each repo) | | website) |
| | | |
+-------+-------+ +---------------+
The second step is triggered by the creation of the tag, creating a series
of jobs in the "tag" pipeline and the "release" pipeline (or "pre-release"
pipeline, in case of beta versions) of the repository the tag landed in::
Tag is created -----------------------------------------------
| |
+----v------------------------------------+ +----------v-----------+
Release pipeline (each repo) Tag pipeline (each repo)
+----+---------------+---------------+----+ +----------------------+
| | | |
v v v v
+-----+-----+ +-----+-----+ +-----+-----+ +-----+-----+
| release | | announce | | propose | | publish |
| | | | |constraints| | release |
|(builds | | (sends | | update | | notes |
| tarball | | email) | | | | |
| & uploads | | | +-----------+ +-----------+
| it) | +-----------+
+-----------+
Note that a single release request can create multiple tags in different
repositories, triggering that second stage in multiple repositories.
Jobs in the release pipeline need information from the release request
(like series name, or whether to upload to pypi). We use metadata in the
git tag itself to pass that information: the "tag" job in step 1 records
the information in the tag, and the jobs in step 2 retrieve that information
directly from the tag.