include::_partials/attributes.adoc[]

= Fedora Final Freeze


== Make sure all retired packages are blocked in koji

Before the freeze we have to make sure all retired packages have been blocked in koji.
To do this, [run the script](https://pagure.io/releng/blob/main/f/scripts/get_retired_packages.sh) that collects all the retired packages
and outputs them into json files in the [lookaside cache](https://src.fedoraproject.org/lookaside).

....
$ ssh pkgs01.fedoraproject.org
$ cd releng/scripts && bash get_retired_packages.sh
....

This script will run about 20 minutes. Once finished, run toddler 'koji_block_retired' to block all retired packages in koji.
Web console: https://console-openshift-console.apps.ocp.fedoraproject.org

....
oc login --token=<token> --server=https://api.ocp.fedoraproject.org:6443
oc project poddlers
oc rsh dc/koji_block_retired
python3 /code/toddlers/playtime.py koji_block_retired
....


Before freezing everything we need to do the last stable push in bodhi.

== Stable push

[source,subs="attributes+"]
....
$ sudo -u apache bodhi-push --releases --stable 'f{branched}'
....

== Update Ansible vars

Set the https://pagure.io/fedora-infra/ansible/blob/main/f/vars/all/Frozen.yaml[_NextReleaseFrozen_ variable] to `True`.

=== Run the playbook

....

$ rbac-playbook groups/koji-hub.yml
....

== Update Bodhi release

[source,subs="attributes+"]
....
$ bodhi releases edit --name F{branched} --state frozen
....

=== Reminder announcement

Send an email as mentioned below to `devel@`, `devel-announce@`, `test-announce@`, `announce@` lists as information that the final freeze is now active.

For the reference, you can refer generic https://pagure.io/releng/blob/main/f/mail-templates/06-final-freeze.txt[template] for final freeze from release engineering repo.

[source,subs="attributes+"]
....
Hi all,
 
Today, YYYY-MM-DD, is an important day on the Fedora Linux {branched} schedule
[1], with significant cut-offs.
 
Today we have the Final Freeze [2] which starts at 14:00 UTC. This means
that only packages which fix accepted blocker or freeze exception bugs
[3][4][5] will be marked as 'stable' and included in the Final composes.
Other builds will remain in updates-testing until the Final release is
approved, at which point the Final freeze is lifted and packages can
move to the 'updates' repository. Pending updates will be pushed before
final release as zero day updates.
 
Regards,
Fedora Release Engineering
 
[1] https://fedorapeople.org/groups/schedule/f-{branched}/f-{branched}-key-tasks.html
[2] https://fedoraproject.org/wiki/Milestone_freezes
[3] https://fedoraproject.org/wiki/QA:SOP_blocker_bug_process
[4] https://fedoraproject.org/wiki/QA:SOP_freeze_exception_bug_process
[5] https://qa.fedoraproject.org/blockerbugs/milestone/f{branched}/final/buglist

....

[NOTE]
====
Please ensure that the reminder email is sent once the state becomes frozen.
====

== During the Final freeze

=== Process stable push requests

During freezes we need to push updates that fix blocker and freeze exception
issues to stable when requested.
QA will file a ticket with the updates to push, which will include the
appropriate command(s). Verify the command(s) and run them.

