[release-guide] Use attributes for release versions instead of hardcoded values.

Signed-off-by: Samyak Jain <samyak.jn11@gmail.com>
This commit is contained in:
Samyak Jain 2023-03-13 14:49:40 +05:30
parent 8caf93b626
commit e11c1191e1
12 changed files with 133 additions and 76 deletions

View file

@ -13,10 +13,13 @@ $ koji clone-tag --all --latest-only f{branched}-modular f{branched}-Beta-modula
=== Stage release to mirrors
[source,subs="attributes+"]
....
$ sh scripts/stage-release.sh 32_Beta Fedora-32-20200312.0 32_Beta-1.2 fedora-32 1
$ sh scripts/stage-release.sh {branched}_Beta Fedora-{branched}-YYYYMMDD.0 _Beta-1.2 fedora-{branched} 1
....
Please update YYYYMMDD in the above command accordingly.
[NOTE]
.Note
@ -30,12 +33,14 @@ an email to [.title-ref]#mirror-admin@lists.fedoraproject.org# list.
We need to sync the signed checksums to /pub/alt/stage/ by running the
following command
[source,subs="attributes+"]
....
$ for dir in Cloud Container Everything Kinoite Labs Modular Sericea Server Silverblue Spins Workstation metadata; do sudo -u ftpsync rsync -avhH /mnt/koji/compose/37/Fedora-37-20221105.0/compose/$dir/ /pub/alt/stage/37_RC-1.7/$dir/ --link-dest=/pub/fedora/linux/releases/37/Everything/ --link-dest=/pub/alt/stage/37_RC-1.2/Everything/ --link-dest=/pub/alt/stage/37_RC-1.3/Everything --link-dest=/pub/alt/stage/37_RC-1.4/Everything --link-dest=/pub/alt/stage/37_RC-1.5/Everything --link-dest=/pub/alt/stage/37_RC-1.6/Everything --link-dest=/pub/alt/stage/37_RC-1.7/Everything; done
$ for dir in Cloud Container Everything Kinoite Labs Modular Sericea Server Silverblue Spins Workstation metadata; do sudo -u ftpsync rsync -avhH /mnt/koji/compose/{branched}/Fedora-{branched}-20221105.0/compose/$dir/ /pub/alt/stage/{branched}_RC-1.7/$dir/ --link-dest=/pub/fedora/linux/releases/{branched}/Everything/ --link-dest=/pub/alt/stage/{branched}_RC-1.2/Everything/ --link-dest=/pub/alt/stage/{branched}_RC-1.3/Everything --link-dest=/pub/alt/stage/{branched}_RC-1.4/Everything --link-dest=/pub/alt/stage/{branched}_RC-1.5/Everything --link-dest=/pub/alt/stage/{branched}_RC-1.6/Everything --link-dest=/pub/alt/stage/{branched}_RC-1.7/Everything; done
....
=== Set release in Bodhi to pending
[source,subs="attributes+"]
....
$ bodhi releases edit --name F{branched} --state pending
....

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Mass Rebuild
=== Description
@ -247,9 +249,11 @@ https://pagure.io/releng[releng git repository]
. Run the `mass-tag.py` script (requires koji kerberos authentication)
+
____
[source,subs="attributes+"]
....
$ cd path/to/releng_repo/scripts
$ ./mass-tag.py --source f36-rebuild --target f36
$ ./mass-tag.py --source f{branched}-rebuild --target f{branched}
....
____
. Send the final notification to the

View file

@ -94,8 +94,9 @@ $ sudo ansible-playbook /srv/web/infra/ansible/playbooks/openshift-apps/bodhi.ym
* To retire the platform in mbs, run the following command on
mbs-backend01.iad2.fedoraproject.org
[source,subs="attributes+"]
....
$ sudo mbs-manager retire platform:f31
$ sudo mbs-manager retire platform:f{old_release}
....
==== Final announcement
@ -140,7 +141,7 @@ previous copy.
____
[source,subs="attributes+"]
....
$ rsync -avAXSHP ./35/ /pub/archive/fedora/linux/releases/{old_release}/
$ rsync -avAXSHP ./{old_release}/ /pub/archive/fedora/linux/releases/{old_release}/
....
____
. we now do the updates and updates/testing in similar ways.

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Bodhi Activation Point
=== Description
@ -12,16 +14,17 @@ at 14:00 UTC.
Make the following koji tag changes
[source,subs="attributes+"]
....
$ koji remove-tag-inheritance f33-updates-candidate f33
$ koji remove-tag-inheritance f33-updates-testing f33
$ koji remove-tag-inheritance f33-updates-pending f33
$ koji remove-tag-inheritance f33-override f33
$ koji add-tag-inheritance f33-updates-candidate f33-updates
$ koji add-tag-inheritance f33-updates-testing f33-updates
$ koji add-tag-inheritance f33-updates-pending f33-updates
$ koji add-tag-inheritance f33-override f33-updates
$ koji edit-tag --perm=admin f33
$ koji remove-tag-inheritance f{branched}-updates-candidate f{branched}
$ koji remove-tag-inheritance f{branched}-updates-testing f{branched}
$ koji remove-tag-inheritance f{branched}-updates-pending f{branched}
$ koji remove-tag-inheritance f{branched}-override f{branched}
$ koji add-tag-inheritance f{branched}-updates-candidate f{branched}-updates
$ koji add-tag-inheritance f{branched}-updates-testing f{branched}-updates
$ koji add-tag-inheritance f{branched}-updates-pending f{branched}-updates
$ koji add-tag-inheritance f{branched}-override f{branched}-updates
$ koji edit-tag --perm=admin f{branched}
....
==== Update bodhi rpm release
@ -29,8 +32,9 @@ $ koji edit-tag --perm=admin f33
Set the bodhi rpm to release to not to automatically create the update
and also bodhi knows to compose the updates
[source,subs="attributes+"]
....
$ bodhi releases edit --name "F33" --stable-tag f33-updates --testing-repository updates-testing --package-manager dnf --no-create-automatic-updates --composed-by-bodhi --state frozen
$ bodhi releases edit --name "F{branched}" --stable-tag f{branched}-updates --testing-repository updates-testing --package-manager dnf --no-create-automatic-updates --composed-by-bodhi --state frozen
....
==== Add the modular release
@ -38,10 +42,13 @@ $ bodhi releases edit --name "F33" --stable-tag f33-updates --testing-repository
Run the following command on your own workstation to add the modular
release
[source,subs="attributes+"]
....
$ bodhi releases create --name F33M --long-name "Fedora 33 Modular" --id-prefix FEDORA-MODULAR --version 33 --branch f33m --dist-tag f33-modular --stable-tag f33-modular-updates --testing-tag f33-modular-updates-testing --candidate-tag f33-modular-updates-candidate --pending-stable-tag f33-modular-updates-pending --pending-testing-tag f33-modular-updates-testing-pending --pending-signing-tag f33-modular-signing-pending --override-tag f33-modular-override --state pending --user mohanboddu
$ bodhi releases create --name F{branched}M --long-name "Fedora {branched} Modular" --id-prefix FEDORA-MODULAR --version {branched} --branch f{branched}m --dist-tag f{branched}-modular --stable-tag f{branched}-modular-updates --testing-tag f{branched}-modular-updates-testing --candidate-tag f{branched}-modular-updates-candidate --pending-stable-tag f{branched}-modular-updates-pending --pending-testing-tag f{branched}-modular-updates-testing-pending --pending-signing-tag f{branched}-modular-signing-pending --override-tag f{branched}-modular-override --state pending --user <fas username>
....
Please update fas account username in above command.
[WARNING]
.Warning
====
@ -103,16 +110,18 @@ Please find the body of the email in templates dir in https://pagure.io/releng/b
Compare koji tagging structure with older release
[source,subs="attributes+"]
....
$ koji list-tag-inheritance <branched_release> --reverse
$ koji list-tag-inheritance <latest_stable_release> --reverse
$ koji list-tag-inheritance {branched} --reverse
$ koji list-tag-inheritance {current} --reverse
....
Compare the bodhi release with older release
[source,subs="attributes+"]
....
$ bodhi releases info <branched_release>
$ bodhi releases info <latest_stable_release>
$ bodhi releases info {branched}
$ bodhi releases info {current}
....
Check for other variants like modular, container and flatpaks

View file

@ -1,6 +1,6 @@
== Breaking Development Freeze
include::_partials/attributes.adoc[]
`FIXME: NEED TO FIGURE OUT HOW TO FEDORA-VERSION-NEXT`
== Breaking Development Freeze
=== Description
@ -18,16 +18,17 @@ Freeze]
See https://fedoraproject.org/wiki/Fedora_Release_Life_Cycle[Fedora
Release Life Cycle] for a summary of all the freezes, dates, and
exception handling, or the release engineering
[https://fedorapeople.org/groups/schedule/f-\{\{FedoraVersionNumbernext}}-releng-tasks.html
[https://fedorapeople.org/groups/schedule/f-{rawhide_next}-releng-tasks.html
calendar for the current release].
=== Action
The commands to tag a package properly once it has been accepted:
[source,subs="attributes+"]
....
$ koji move-pkg --force dist-f{{FedoraVersionNumber|next}}-updates-candidate dist-f{{FedoraVersionNumber|next}} <PKGNAME>
$ koji tag-pkg --force f{{FedoraVersionNumber|next}}-<RELEASE> <PKGNAME>
$ koji move-pkg --force dist-f{rawhide_next}-updates-candidate dist-f{rawhide_next} <PKGNAME>
$ koji tag-pkg --force f{rawhide_next}-<RELEASE> <PKGNAME>
....
Where <PKGNAME> is the package name, and <RELEASE> is the first release
@ -38,9 +39,10 @@ in which the package should land (e.g. alpha, beta, final).
The `koji` client reports success or failure. For secondary
verification, run these commands:
[source,subs="attributes+"]
....
$ koji latest-pkg dist-f{{FedoraVersionNumber|next}} <PKGNAME>
$ koji latest-pkg dist-f{{FedoraVersionNumber|next}}-updates-candidate <PKGNAME>
$ koji latest-pkg dist-f{rawhide_next} <PKGNAME>
$ koji latest-pkg dist-f{rawhide_next}-updates-candidate <PKGNAME>
....
=== Consider Before Running

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Create Release Signing Key
=== Description
@ -51,16 +53,17 @@ options:
-h, --help show this help message and exit
....
For example if we wanted to create the Fedora 23 signing key, we would
For example if we wanted to create the Fedora {branched} signing key, we would
do the following:
. Log into a system configured to run sigul client.
. Create the key using a strong passphrase when prompted
+
[source,subs="attributes+"]
....
$ sigul new-key --key-admin ausil --key-type gnupg \
--gnupg-name-real Fedora \
--gnupg-name-comment 23 \
--gnupg-name-comment {branched} \
--gnupg-name-email fedora-23-primary@fedoraproject.org fedora-23
....
+
@ -75,15 +78,17 @@ $ sigul new-key --key-admin ausil --key-type gnupg \
. Wait a while for entropy. This can take several minutes.
. For Fedora, also create the IMA signing key
+
[source,subs="attributes+"]
....
$ sigul new-key --key-admin ausil --key-type ECC fedora-23-ima
$ sigul new-key --key-admin ausil --key-type ECC fedora-{branched}-ima
....
. Grant key access to Fedora Account holders who will be signing
packages and protect it with a temporary a passphrase. For example,
`CHANGEME.`. Do the same with the -ima key for Fedora.
+
[source,subs="attributes+"]
....
$ sigul grant-key-access fedora-23 kevin
$ sigul grant-key-access fedora-{branched} kevin
....
[NOTE]
@ -98,8 +103,9 @@ don't respond, revoke access until they are ready to change their
passphrase. Signers can change their passphrase using the
`change-passphrase` command:
+
[source,subs="attributes+"]
....
$ sigul change-passphrase fedora-23
$ sigul change-passphrase fedora-{branched}
....
. When your sigul cert expires, you will need to run:
+
@ -121,19 +127,21 @@ The fedora-repos package houses a copy of the public key information.
This is used by rpm to verify the signature on files encountered.
Currently the fedora-repos package has a single key file named after the
version of the key and the arch the key is for. To continue our example,
the file would be named `RPM-GPG-KEY-fedora-27-primary` which is the
primary arch key for Fedora 27. To create this file, use the
the file would be named `RPM-GPG-KEY-fedora-{branched}-primary` which is the
primary arch key for Fedora {branched}. To create this file, use the
`get-public-key` command from sigul:
[source,subs="attributes+"]
....
$ sigul get-public-key fedora-27 > RPM-GPG-KEY-fedora-27-primary
$ sigul get-public-key fedora-{branched} > RPM-GPG-KEY-fedora-{branched}-primary
....
Add this file to the repo and update the archmap file for the new
release.
[source,subs="attributes+"]
....
$ git add RPM-GPG-KEY-fedora-27-primary
$ git add RPM-GPG-KEY-fedora-{branched}-primary
....
Then make a new fedora-repos build for rawhide

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Enabling Rawhide in Bodhi
=== Description
@ -12,30 +14,33 @@ Fedora version (ie Fedora 31), but it is set in the prerelease state.
===== Add the koji tags
[source,subs="attributes+"]
....
$ koji add-tag --parent f31 f31-updates-candidate
$ koji add-tag --parent f31 f31-updates-testing
$ koji add-tag --parent f31-updates-testing f31-updates-testing-pending
$ koji edit-tag --perm autosign f31-updates-testing-pending
$ koji add-tag --parent f31 f31-updates-pending
$ koji add-tag --parent f31 f31-override
$ koji add-tag --parent f{rawhide} f{rawhide}-updates-candidate
$ koji add-tag --parent f{rawhide} f{rawhide}-updates-testing
$ koji add-tag --parent f{rawhide}-updates-testing f{rawhide}-updates-testing-pending
$ koji edit-tag --perm autosign f{rawhide}-updates-testing-pending
$ koji add-tag --parent f{rawhide} f{rawhide}-updates-pending
$ koji add-tag --parent f{rawhide} f{rawhide}-override
....
===== Change the koji targets
[source,subs="attributes+"]
....
$ koji edit-target f31 --dest-tag f31-updates-candidate
$ koji edit-target f31-candidate --dest-tag f31-updates-candidate
$ koji edit-target rawhide --dest-tag f31-updates-candidate
$ koji edit-target f{rawhide} --dest-tag f{rawhide}-updates-candidate
$ koji edit-target f{rawhide}-candidate --dest-tag f{rawhide}-updates-candidate
$ koji edit-target rawhide --dest-tag f{rawhide}-updates-candidate
....
===== Create the release in bodhi
[source,subs="attributes+"]
....
$ bodhi releases create --name "F31" --long-name "Fedora 31" --id-prefix FEDORA --version 31 --branch f31 \
--dist-tag f31 --stable-tag f31 --testing-tag f31-updates-testing --candidate-tag f31-updates-candidate \
--pending-stable-tag f31-updates-pending --pending-testing-tag f31-updates-testing-pending \
--state pending --override-tag f31-override --create-automatic-updates --not-composed-by-bodhi
$ bodhi releases create --name "F{rawhide}" --long-name "Fedora {rawhide}" --id-prefix FEDORA --version {rawhide} --branch f{rawhide} \
--dist-tag f{rawhide} --stable-tag f{rawhide} --testing-tag f{rawhide}-updates-testing --candidate-tag f{rawhide}-updates-candidate \
--pending-stable-tag f{rawhide}-updates-pending --pending-testing-tag f{rawhide}-updates-testing-pending \
--state pending --override-tag f{rawhide}-override --create-automatic-updates --not-composed-by-bodhi
....
The important flags are [.title-ref]#--not-composed-by-bodhi# which
@ -50,8 +55,9 @@ Bodhi is configured to required zero mandatory days in testing for the
rawhide release. This is done in ansible
roles/bodhi2/base/templates/production.ini.j2 with the following.
[source,subs="attributes+"]
....
f{{ FedoraRawhideNumber }}.pre_beta.mandatory_days_in_testing = 0
f{rawhide}.pre_beta.mandatory_days_in_testing = 0
....
===== Robosignatory configuration
@ -59,11 +65,12 @@ f{{ FedoraRawhideNumber }}.pre_beta.mandatory_days_in_testing = 0
Robosignatory needs to be configured to signed the rawhide builds before
these builds are tested by the CI pipeline.
[source,subs="attributes+"]
....
{
"from": "f31-updates-candidate",
"to": "f31-updates-testing-pending",
"key": "fedora-31",
"from": "f{rawhide}-updates-candidate",
"to": "f{rawhide}-updates-testing-pending",
"key": "fedora-{rawhide}",
"keyid": "3c3359c4"
},
....
@ -76,20 +83,23 @@ stay configured as rawhide until we active Bodhi for it (2 weeks later).
To activate Bodhi on the old rawhide (eg. F31) the existing release in
bodhi should be modified has follow.
::::
$ bodhi releases edit --name "F31" --stable-tag f31-updates
[source,subs="attributes+"]
....
$ bodhi releases edit --name "F{rawhide}" --stable-tag f{rawhide}-updates
--no-create-automatic-updates --composed-by-bodhi
....
===== Robosignatory configuration
At Bodhi activation time the Robosignatory configuration needs to be
update to match the normal configuration of bodhi releases.
[source,subs="attributes+"]
....
{
"from": "f31-signing-pending",
"to": "f31-updates-testing-pending",
"key": "fedora-31",
"from": "f{rawhide}-signing-pending",
"to": "f{rawhide}-updates-testing-pending",
"key": "fedora-{rawhide}",
"keyid": "3c3359c4"
},
....

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Release the Fedora Container Base Image
=== Description
@ -24,7 +26,7 @@ https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-base.ks[fedora-
https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-base-minimal.ks[fedora-container-base-minimal]
Changes made on the rawhide branch will results in the rawhide image,
other branches (f30, f31) should be used to modify other releases.
other branches (f{current}, f{old_release}) should be used to modify other releases.
==== Compose Configuration (Pungi)
@ -55,9 +57,10 @@ tracker].
The script can then be executed as follow
[source,subs="attributes+"]
....
$./sync-latest-container-base-image.sh 31
$./sync-latest-container-base-image.sh 32
$./sync-latest-container-base-image.sh {current}
$./sync-latest-container-base-image.sh {branched}
....
This will take care of pushing the [.title-ref]#fedora# and

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Retire Orphaned Packages
=== Description
@ -63,8 +65,9 @@ affected, since other branches might still be maintained.
To verify that the packages were blocked correctly we can use the
`latest-pkg` `koji` action.
[source,subs="attributes+"]
....
$ koji latest-pkg dist-f21 wdm
$ koji latest-pkg dist-f{branched} wdm
....
This should return nothing, as the `wdm` package is blocked.

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Sign the packages
* This doc explains how to sign builds in the release(s).
@ -19,10 +21,11 @@ releng git repo
+
_NOTE! This will NOT help if Bodhi marks a build as unsigned!_
+
[source,subs="attributes+"]
....
$ ./sigulsign_unsigned.py -vv --write-all \
--sigul-batch-size=25 fedora-22 \
$(cat /var/cache/sigul/Stable-F22 /var/cache/sigul/Testing-F22)
--sigul-batch-size=25 fedora-{branched} \
$(cat /var/cache/sigul/Stable-F{branched} /var/cache/sigul/Testing-F{branched})
....
(Make sure you sign each release with the right key... ie, 'fedora-19'

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Stage Final Release for Mirrors
=== Description
@ -8,15 +10,16 @@ meeting it is ready for release to the Fedora mirrors.
=== Action
. Gather the needed info for running the staging script: Release
Version: the numerical version number of the release `24` ComposeID: The
Version: the numerical version number of the release `{branched}` ComposeID: The
ID of the Compose Label: Compsoe label for the location in stage
`24_RC-1.2` for example Key: the name of teh release key `fedora-24` or
`fedora-24-secondary` as examples Prerelease: 0 or 1 sets if the release
`{branched}_RC-1.2` for example Key: the name of teh release key `fedora-{branched}` or
`fedora-{branched}-secondary` as examples Prerelease: 0 or 1 sets if the release
goes in test/ or not Arch: <optional> For secondary arches, changes some
internal locations
+
[source,subs="attributes+"]
....
$ scripts/stage-release.sh 24 Fedora-24-20160614.0 24_RC-1.2 fedora-24 0
$ scripts/stage-release.sh {branched} Fedora-{branched}-20160614.0 {branched}_RC-1.2 fedora-24 0
....
. Sync the release to the Red Hat internal archive following internally
documented

View file

@ -1,3 +1,5 @@
include::_partials/attributes.adoc[]
== Updating Comps
=== Description
@ -15,28 +17,32 @@ $ git clone ssh://git@pagure.io/fedora-comps.git
....
. Create the new comps file for next release:
+
[source,subs="attributes+"]
....
$ cp comps-f24.xml.in comps-f25.xml.in
$ cp comps-f{branched}.xml.in comps-f{rawhide}.xml.in
....
. Edit Makefile to update comps-rawhide target
+
[source,subs="attributes+"]
....
- -comps-rawhide: comps-f24.xml
- - @mv comps-f24.xml comps-rawhide.xml
+comps-rawhide: comps-f25.xml
+ @mv comps-f25.xml comps-rawhide.xml
- -comps-rawhide: comps-f{branched}.xml
- - @mv comps-f{branched}.xml comps-rawhide.xml
+comps-rawhide: comps-f{rawhide}.xml
+ @mv comps-f{rawhide}.xml comps-rawhide.xml
....
. Add the new comps file to source control:
+
[source,subs="attributes+"]
....
$ git add comps-f25.xml.in
$ git add comps-f{rawhide}.xml.in
....
. Edit the list of translated comps files in po/POTFILES.in to reflect
currently supported releases.
+
[source,subs="attributes+"]
....
-comps-f22.xml
+comps-f25.xml
-comps-f{old_release}.xml
+comps-f{rawhide}.xml
....
. Send it up:
+