Update SOPs for creation of release candidate composes

This commit is contained in:
Patrik Polakovič 2024-05-21 16:40:01 +02:00 committed by ryanlerch
parent 5aab077dbd
commit b8dbc37a97
2 changed files with 31 additions and 175 deletions

View file

@ -15,13 +15,14 @@ candidate composes are not currently automated.
== Action
=== Make pungi config changes
=== Create the fedora-beta.conf configuration file using the script
The script can be found https://pagure.io/pungi-fedora/blob/main/f/create-candidate-configs.py[here].
Create fedora-beta.conf on the branched release branch, For inspiration look at https://pagure.io/pungi-fedora/pull-request/1148[This PR]
There is a mandatory argument to specify the milestone to generate (beta or final)
and optional arguments for the major and minor versions for the label.
make sure to set runroot_tag in general.conf to current branched
make sure all ostree releases have config_branch set to the branched release
use grep to find any references to rawhide.
Example usage:
`./create-candidate-configs.py --minor=5 beta`
=== Review Compose Tags
@ -31,7 +32,7 @@ use grep to find any references to rawhide.
....
$ koji list-tagged f{branched}-compose
....
. Verify pre-existing builds are in compose tags
. Verify preexisting builds are in compose tags
+
The tagged builds from the previous composes should all be present in
the output from the previous step. Consult the request ticket for the
@ -39,8 +40,8 @@ list of builds expected in this output.
+
[NOTE]
====
The very first run of an Beta, or GA compose should have no builds
listed under the compose tag. It is important to clear pre-existing
The very first run of a Beta or GA compose should have no builds
listed under the compose tag. It is important to clear preexisting
builds from the compose tag when moving between the Beta and RC
composes. Verify that these builds were removed.
@ -73,9 +74,9 @@ appropriate permissions in the koji tool.
=== Running the Compose
. Update the pungi-fedora config file Composes use a configuration file
to construct the compose. Each compose uses its own configuration. The
`global_release` variable should start from 1.1 and the second number
. Composes use a configuration file to construct the compose.
Each compose uses its own configuration.
The `global_release` variable should start from 1.1 and the second number
should increment each time a new compose is created.
* Beta - `fedora-beta.conf`
@ -117,7 +118,7 @@ $ git pull origin f{branched}
. Run the compose
+
....
$ sudo ./release-candidate.sh Beta-#.#
$ sudo ./release-candidate.sh 41_Beta-#.#
....
+
The numbering scheme begins with 1.1 and the second number is
@ -125,8 +126,8 @@ incremented after each compose.
+
[NOTE]
====
Pungi requires numbers in the format #.# as an argument. It is because
of this that composes always start with the number 1 and the second
Pungi requires numbers in the format `major.minor` as an argument (e.g. `1.4`).
It is because of this that composes always start with the number 1 and the second
number is incremented with each compose.
====
+
@ -136,79 +137,6 @@ If the compose fails with a directory missing error, then create the
compose directory with `mkdir /mnt/koji/compose/{branched}`
====
=== Syncing the Compose
We sync the compose to `/pub/alt/stage` to enable faster access to new
content for QA and the larger Fedora community.
. Log into the compose backend
+
....
$ ssh compose-x86-01.iad2.fedoraproject.org
....
. Open a screen session
+
....
$ screen
....
. Check the status of the compose
+
[source,subs="attributes+"]
....
$ cat /mnt/koji/compose/{branched}/[compose_id]/STATUS
....
+
Do not continue with any further steps if the output above is `DOOMED`.
. Create the directory targeted for the copy :
+
[source,subs="attributes+"]
....
$ sudo -u ftpsync mkdir -m 750 -p /pub/alt/stage/{branched}_[release_label]-[#.#]
....
. Locate the compose directory that will be the copy source :
+
[source,subs="attributes+"]
....
$ ls /mnt/koji/compose/{branched}/[compose_id]
....
+
[NOTE]
====
Take care executing the synchronization if the next compose is already
running. Be sure to grab the correct directory.
If in doubt, check
/mnt/koji/compose/{branched}/[compose_id]/STATUS to be sure it is
finished.
====
. Run the synchronization one-liner
+
The synchronization of the completed compose to the public domain is
currently a one-liner shell script. Pay close attention to what needs
replaced in the example below.
+
[source,subs="attributes+"]
....
$ sudo -u ftpsync sh -c 'for dir in Everything Cloud Container Kinoite Labs Modular Server Silverblue Spins Workstation metadata; do rsync -avhH /mnt/koji/compose/{branched}/Fedora-{branched}-20190911.0/compose/$dir/ /pub/alt/stage/{branched}_Beta-1.1/$dir/ --link-dest=/pub/fedora/linux/development/{branched}/Everything/ --link-dest=/pub/alt/stage/{branched}_Beta-1.1/Everything/; done'
....
+
[NOTE]
====
If multiple composes are run like 1.2, 1.3, add multiple --link-dest
arguments above with multiple composes
====
. Set the permissions of the synced compose :
+
[source,subs="attributes+"]
....
$ sudo -u ftpsync chmod 755 /pub/alt/stage/{branched}_[release_label]-[#.#]
....
. Update the issue in the releng pagure repository
+
Once the compose and sync is complete the issue in pagure should be
updated and closed.
=== Verification
The method for verifying a compose has completed is checking

View file

@ -14,14 +14,15 @@ candidate composes are not currently automated.
== Action
=== Make pungi config changes
=== Create the fedora-final.conf configuration file using the script
Create fedora-final.conf on the branched release branch, For inspiration look at https://pagure.io/pungi-fedora/pull-request/1148[This PR]
The script can be found https://pagure.io/pungi-fedora/blob/main/f/create-candidate-configs.py[here].
make sure to set runroot_tag in general.conf to current branched
make sure all ostree releases have config_branch set to the branched release
make sure that if new artifacts are introduced in the release, they are part of the final config.
use grep to find any references to rawhide.
There is a mandatory argument to specify the milestone to generate (beta or final)
and optional arguments for the major and minor versions for the label.
Example usage:
`./create-candidate-configs.py --minor=5 final`
=== Review Compose Tags
@ -31,7 +32,7 @@ use grep to find any references to rawhide.
....
$ koji list-tagged f{branched}-compose
....
. Verify pre-existing builds are in compose tags
. Verify preexisting builds are in compose tags
+
The tagged builds from the previous composes should all be present in
the output from the previous step. Consult the request ticket for the
@ -39,8 +40,8 @@ list of builds expected in this output.
+
[NOTE]
====
The very first run of an GA compose should have no builds
listed under the compose tag. It is important to clear pre-existing
The very first run of a GA compose should have no builds
listed under the compose tag. It is important to clear preexisting
builds from the compose tag when moving between the Beta and RC
composes. Verify that these builds were removed.
@ -73,9 +74,9 @@ appropriate permissions in the koji tool.
=== Running the Compose
. Update the pungi-fedora config file Composes use a configuration file
to construct the compose. Each compose uses its own configuration. The
`global_release` variable should start from 1.1 and the second number
. Composes use a configuration file to construct the compose.
Each compose uses its own configuration.
The `global_release` variable should start from 1.1 and the second number
should increment each time a new compose is created.
* GA - `fedora-final.conf`
@ -117,7 +118,7 @@ $ git pull origin f{branched}
. Run the compose
+
....
$ sudo ./release-candidate.sh RC-#.#
$ sudo ./release-candidate.sh 41_RC-#.#
....
+
The numbering scheme begins with 1.1 and the second number is
@ -125,8 +126,8 @@ incremented after each compose.
+
[NOTE]
====
Pungi requires numbers in the format #.# as an argument. It is because
of this that composes always start with the number 1 and the second
Pungi requires numbers in the format `major.minor` as an argument (e.g. `1.4`).
It is because of this that composes always start with the number 1 and the second
number is incremented with each compose.
====
+
@ -136,79 +137,6 @@ If the compose fails with a directory missing error, then create the
compose directory with `mkdir /mnt/koji/compose/{branched}`
====
=== Syncing the Compose
We sync the compose to `/pub/alt/stage` to enable faster access to new
content for QA and the larger Fedora community.
. Log into the compose backend
+
....
$ ssh compose-x86-01.iad2.fedoraproject.org
....
. Open a screen session
+
....
$ screen
....
. Check the status of the compose
+
[source,subs="attributes+"]
....
$ cat /mnt/koji/compose/{branched}/[compose_id]/STATUS
....
+
Do not continue with any further steps if the output above is `DOOMED`.
. Create the directory targeted for the copy :
+
[source,subs="attributes+"]
....
$ sudo -u ftpsync mkdir -m 750 -p /pub/alt/stage/{branched}_RC-[#.#]
....
. Locate the compose directory that will be the copy source :
+
[source,subs="attributes+"]
....
$ ls /mnt/koji/compose/{branched}/[compose_id]
....
+
[NOTE]
====
Take care executing the synchronization if the next compose is already
running. Be sure to grab the correct directory.
If in doubt, check
/mnt/koji/compose/{branched}/[compose_id]/STATUS to be sure it is
finished.
====
. Run the synchronization one-liner
+
The synchronization of the completed compose to the public domain is
currently a one-liner shell script. Pay close attention to what needs
replaced in the example below.
+
[source,subs="attributes+"]
....
$ sudo -u ftpsync sh -c 'for dir in Everything Cloud Container Kinoite Labs Modular Server Silverblue Spins Workstation metadata; do rsync -avhH /mnt/koji/compose/{branched}/Fedora-{branched}-20190911.0/compose/$dir/ /pub/alt/stage/{branched}_RC-1.1/$dir/ --link-dest=/pub/fedora/linux/development/{branched}/Everything/ --link-dest=/pub/alt/stage/{branched}_RC-1.1/Everything/; done'
....
+
[NOTE]
====
If multiple composes are run like 1.2, 1.3, add multiple --link-dest
arguments above with multiple composes
====
. Set the permissions of the synced compose :
+
[source,subs="attributes+"]
....
$ sudo -u ftpsync chmod 755 /pub/alt/stage/{branched}_RC-[#.#]
....
. Update the issue in the releng pagure repository
+
Once the compose and sync is complete the issue in pagure should be
updated and closed.
=== Verification
The method for verifying a compose has completed is checking