* Link to docs.fp.o not the wiki * Send announcements to test@ as well as test-announce@ * Only update fedora-appstream-metadata package if necessary * Don't use bullets in sections with only one instruction * Drop the FNNM release from Bodhi commands (no longer exists) * Clean up the flow of ansible section a bit * Correct syntax for the rbac-playbook command Signed-off-by: Adam Williamson <awilliam@redhat.com>
248 lines
7.3 KiB
Text
248 lines
7.3 KiB
Text
include::_partials/attributes.adoc[]
|
|
|
|
= End Of Life
|
|
|
|
== Description
|
|
|
|
Each release of Fedora is maintained as laid out in the
|
|
https://docs.fedoraproject.org/en-US/releases/lifecycle/#_maintenance_schedule[maintenance
|
|
schedule]. At the conclusion of the maintenance period, a Fedora release
|
|
enters `end of life` status. This procedure describes the tasks
|
|
necessary to move a release to that status. To get the correct EOL date visit
|
|
https://fedorapeople.org/groups/schedule/f-{branched}/f-{branched}-key-tasks.html[release schedule] for the last release.
|
|
|
|
== Actions
|
|
|
|
=== Reminder announcement
|
|
|
|
Around a week before the EOL date, end an email to `devel@`, `devel-announce@`, `test@`, `test-announce@`, `announce@` lists as remainder about the release EOL.
|
|
Use the https://pagure.io/releng/blob/main/f/mail-templates/08-end-of-life.txt[template] from release engineering repo.
|
|
|
|
[NOTE]
|
|
====
|
|
Please ensure that the reminder email is scheduled to be sent one week before the end of life.
|
|
====
|
|
|
|
=== `fedora-appstream-metadata` package update
|
|
|
|
If necessary, update the
|
|
https://src.fedoraproject.org/rpms/fedora-appstream-metadata[`fedora-appstream-metadata`]
|
|
package with the new EOL date. Follow the instructions from the repo README.
|
|
|
|
Build the package, create an update and make sure it lands in the stable repo
|
|
before proceeding.
|
|
|
|
This is not necessary if the package already has the correct EOL date.
|
|
|
|
=== Koji tasks
|
|
|
|
* Disable builds by removing targets
|
|
|
|
[source,subs="attributes+"]
|
|
....
|
|
$ koji remove-target f{old_release}
|
|
$ koji remove-target f{old_release}-candidate
|
|
$ koji remove-target f{old_release}-container-candidate
|
|
$ koji remove-target f{old_release}-flatpak-candidate
|
|
$ koji remove-target f{old_release}-infra
|
|
$ koji remove-target f{old_release}-coreos-continuous
|
|
$ koji remove-target f{old_release}-rebuild
|
|
....
|
|
|
|
* Remove sidetags
|
|
|
|
Remove any existing sidetags from the eol release.
|
|
|
|
[source,subs="attributes+"]
|
|
....
|
|
for i in `koji list-sidetags --basetag f{old_release}`
|
|
do
|
|
koji remove-sidetag $i
|
|
done
|
|
....
|
|
|
|
You need to do this differently because just removing the target of
|
|
a sidetag will leave it in a weird state where it cannot be removed.
|
|
|
|
|
|
* Purge from disk the signed copies of rpms that are signed with the
|
|
EOL'd release key. To acheive this, add the release key to
|
|
*koji_cleanup_signed.py* script in https://pagure.io/releng[releng] repo
|
|
and the script on compose-branched01.iad2.fedoraproject.org
|
|
|
|
....
|
|
./scripts/koji_cleanup_signed.py
|
|
....
|
|
|
|
=== Final stable push
|
|
|
|
Do a final stable push for the release in Bodhi, following the
|
|
xref:releng_misc_guide:sop_pushing_updates.adoc[Pushing Updates SOP].
|
|
|
|
=== Bodhi tasks
|
|
|
|
Run the following bodhi commands to set the releases state to
|
|
*archived*
|
|
|
|
[source,subs="attributes+"]
|
|
....
|
|
$ bodhi releases edit --name "F{old_release}" --state archived
|
|
$ bodhi releases edit --name "F{old_release}C" --state archived
|
|
$ bodhi releases edit --name "F{old_release}F" --state archived
|
|
....
|
|
|
|
=== Fedora Infra Ansible Changes
|
|
|
|
We need to make some changes and then run several roles in the ansible repo.
|
|
|
|
==== Update FedoraPreviousPrevious.yaml in ansible repository
|
|
|
|
Edit /vars/all/FedoraPreviousPrevious.yaml and set the value to `False`.
|
|
|
|
==== Adjust the EOL for gnome-software
|
|
|
|
Edit /roles/pkgdb-proxy/files/pkgdb-gnome-software-collections.json in ansible
|
|
and set the release to status "EOL".
|
|
|
|
==== Run the playbooks
|
|
|
|
First, push the above edits. Then run the associated playbooks on _batcave01_:
|
|
|
|
....
|
|
$ sudo ansible-playbook /srv/web/infra/ansible/playbooks/groups/bodhi-backend.yml
|
|
$ sudo ansible-playbook /srv/web/infra/ansible/playbooks/groups/koji-hub.yml
|
|
$ sudo ansible-playbook /srv/web/infra/ansible/playbooks/groups/releng-compose.yml
|
|
$ sudo ansible-playbook /srv/web/infra/ansible/playbooks/groups/proxies.yml -t pkgdb2
|
|
$ sudo ansible-playbook /srv/web/infra/ansible/playbooks/manual/autosign.yml
|
|
$ sudo ansible-playbook /srv/web/infra/ansible/playbooks/openshift-apps/bodhi.yml
|
|
....
|
|
|
|
[NOTE]
|
|
====
|
|
Another way to run the playbook is using rbac-playbook, in case you don't have sysadmin-main rights or can't become root.
|
|
Syntax: sudo rbac-playbook groups/bodhi-backend.yml
|
|
====
|
|
|
|
=== Final announcement
|
|
|
|
Send the final announcement to `devel@`, `devel-announce@`, `test@`, `test-announce@`, `announce@` lists.
|
|
Use the https://pagure.io/releng/blob/main/f/mail-templates/08-end-of-life.txt[template] from release engineering repo.
|
|
|
|
|
|
==== stage the EOL release to archive
|
|
|
|
. Log into to bodhi-backend01 and become root
|
|
+
|
|
____
|
|
....
|
|
$ ssh bodhi-backend01.iad2.fedoraproject.org
|
|
$ sudo su
|
|
$ su - ftpsync
|
|
....
|
|
____
|
|
. Then change into the releases directory.
|
|
+
|
|
____
|
|
....
|
|
$ cd /pub/fedora/linux/releases
|
|
....
|
|
____
|
|
. Check to see that the target directory doesnt already exist.
|
|
+
|
|
____
|
|
....
|
|
$ ls /pub/archive/fedora/linux/releases/
|
|
....
|
|
____
|
|
. Do a recursive rsync to update any changes in the trees since the previous
|
|
copy.
|
|
+
|
|
____
|
|
[source,subs="attributes+"]
|
|
....
|
|
$ rsync -avAXSHP ./{old_release}/ /pub/archive/fedora/linux/releases/{old_release}/
|
|
....
|
|
____
|
|
. We will now do the updates and updates/testing in similar ways.
|
|
+
|
|
____
|
|
[source,subs="attributes+"]
|
|
....
|
|
$ cd ../updates/
|
|
$ rsync -avAXSHP {old_release}/ /pub/archive/fedora/linux/updates/{old_release}/
|
|
$ cd testing
|
|
$ rsync -avAXSHP {old_release}/ /pub/archive/fedora/linux/updates/testing/{old_release}/
|
|
....
|
|
____
|
|
. Do the same with fedora-secondary.
|
|
+
|
|
____
|
|
[source,subs="attributes+"]
|
|
....
|
|
$ cd /pub/fedora-secondary/releases/
|
|
$ rsync -avAXSHP ./{old_release}/ /pub/archive/fedora-secondary/releases/{old_release}/
|
|
$ cd ../updates/
|
|
$ rsync -avAXSHP {old_release}/ /pub/archive/fedora-secondary/updates/{old_release}/
|
|
$ cd testing
|
|
$ rsync -avAXSHP {old_release}/ /pub/archive/fedora-secondary/updates/testing/{old_release}/
|
|
....
|
|
____
|
|
. Announce to the mirror list this has been done and that in 2 weeks you will
|
|
move the old trees to archives.
|
|
|
|
==== Move the EOL release to archive
|
|
|
|
. In two weeks, run the following playbook from batcave:
|
|
____
|
|
[source,subs="attributes+"]
|
|
....
|
|
$ rbac-playbook -v /srv/web/infra/ansible/playbooks/manual/mirrormanager/move-to-archive.yml --extra-vars="product='Fedora' version='{old_release}'"
|
|
....
|
|
____
|
|
. If there are problems, the postgres DB may have issues and so you need
|
|
to get a DBA to update the backend to fix items.
|
|
. Wait an hour or so then you can remove the files from the main tree.
|
|
|
|
[NOTE]
|
|
====
|
|
We need to do a cleanup here for both fedora and fedora-secondary for releases, updates, and updates/testing for the {old_release} release.
|
|
====
|
|
|
|
____
|
|
[source,subs="attributes+"]
|
|
....
|
|
$ ssh bodhi-backend01
|
|
$ cd /pub/fedora/linux/releases/{old_release}
|
|
$ ls # make sure you have stuff here
|
|
$ rm -rf *
|
|
$ ln ../20/README .
|
|
$ cd /pub/fedora/linux/updates/{old_release}
|
|
$ ls # make sure you have stuff here
|
|
$ rm -rf *
|
|
$ ln ../20/README .
|
|
$ cd /pub/fedora/linux/updates/testing/{old_release}
|
|
$ ls # make sure you have stuff here
|
|
$ rm -rf *
|
|
$ ln ../20/README .
|
|
|
|
#for fedora-secondary
|
|
$ cd /pub/fedora-secondary/releases/{old_release}
|
|
$ ls # make sure you have stuff here
|
|
$ rm -rf *
|
|
$ ln ../20/README .
|
|
$ cd /pub/fedora-secondary/updates/{old_release}
|
|
$ ls # make sure you have stuff here
|
|
$ rm -rf *
|
|
$ ln ../20/README .
|
|
$ cd /pub/fedora-secondary/updates/testing/{old_release}
|
|
$ ls # make sure you have stuff here
|
|
$ rm -rf *
|
|
$ ln ../20/README .
|
|
....
|
|
____
|
|
|
|
== Consider Before Running
|
|
|
|
* Resource contention in infrastructure, such as outages
|
|
* Extenuating circumstances for specific planned updates, if any
|
|
* Send the reminder announcement, if it isn't sent already
|