From 5acf648df8d52065d2c65f0618ce0d8bc6748fea Mon Sep 17 00:00:00 2001
From: Carl George <carlwgeorge@gmail.com>
Date: Nov 07 2025 05:49:36 +0000
Subject: Create initial EPEL minor version EOL process


Signed-off-by: Carl George <carlwgeorge@gmail.com>

---

diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc
index 6739668..64e943b 100644
--- a/modules/ROOT/nav.adoc
+++ b/modules/ROOT/nav.adoc
@@ -53,6 +53,7 @@
 *** xref:release_guide:sop_final_release.adoc[Final Release]
 *** xref:release_guide:sop_post-release_cleanup.adoc[Post-Release Cleanup]
 *** xref:release_guide:sop_release_eol.adoc[End Of Life]
+*** xref:release_guide:sop_epel_minor_eol.adoc[EPEL Minor Version End of Life]
 ** xref:releng_misc_guide:index.adoc[Miscellaneous SOPs]
 *** xref:releng_misc_guide:sop_unretire.adoc[Unretire a Package]
 *** xref:releng_misc_guide:sop_package_blocking.adoc[Block a Package]
diff --git a/modules/release_guide/pages/sop_epel_minor_eol.adoc b/modules/release_guide/pages/sop_epel_minor_eol.adoc
new file mode 100644
index 0000000..04b5d53
--- /dev/null
+++ b/modules/release_guide/pages/sop_epel_minor_eol.adoc
@@ -0,0 +1,199 @@
+include::_partials/attributes.adoc[]
+
+= EPEL Minor Version End of Life
+
+== Description
+
+Each minor release of EPEL is maintained as laid out in
+xref:epel:epel-policy.adoc#policy_for_end_of_life_releases[EPEL policy].
+
+
+At the conclusion of the maintenance period,
+an EPEL release enters "End of Life" status,
+also known as retirement.
+This procedure describes the tasks necessary to move a release to that status.
+
+== Actions
+
+=== Reminder announcement
+
+Before the actual retirement takes place,
+send a reminder that it will be happening soon.
+Post this to Fedora Discussion in the
+https://discussion.fedoraproject.org/c/project/7[Project Discussion category]
+with the `#epel-sig` tag
+(https://discussion.fedoraproject.org/t/upcoming-epel-10-0-retirement/171810[example]).
+Also send an email to the `epel-devel@` and `devel@` lists
+(https://lists.fedoraproject.org/archives/list/epel-devel@lists.fedoraproject.org/thread/JUFNPNAYY6CECX54UN64IPBECTMDVDMM/[example]).
+
+[NOTE]
+====
+We're not able to declare a specific date for the retirement
+because it is dependent on the RHEL schedule.
+As a rough guideline,
+try to send the reminder announcement at the beginning of the month
+in which the next RHEL minor version is expected to occur.
+====
+
+=== Koji tasks
+
+Disable builds by removing targets.
+
+[source,console,subs="attributes"]
+----
+$ koji remove-target epel10.0
+$ koji remove-target epel10.0-candidate
+----
+
+Remove any existing sidetags from the EOL release.
+
+[source,console,subs="attributes"]
+----
+$ koji remove-sidetag $(koji list-sidetags --basetag epel10.0-build)
+----
+
+This must be done with `+koji remove-sidetag+` and not `+koji remove-target+`
+because just removing the target of a sidetag will leave it in a weird state where it cannot be removed.
+
+
+=== Final stable push
+
+Do a final stable push for the EPEL-10.0 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 EPEL-10.0 release to the *archived* state.
+
+[source,console,subs="attributes"]
+----
+$ bodhi releases edit --name EPEL-10.0 --state archived
+----
+
+=== Fedora Infra Ansible Changes
+
+We need to make some changes and then run several roles in the ansible repo.
+
+==== Update EPEL.yaml in ansible repository
+
+Edit `+/vars/all/EPEL.yaml+` and change:
+
+* `+epel_branched_minor+` from `+1+` to `+false+`
+* `+epel_z_minor+` from `+0+` to `+1+`
+
+==== Remove EOL release from new-updates-sync
+
+Edit `+roles/bodhi2/backend/files/new-updates-sync+`
+and remove the `+epel10.0+` section of the `+RELEASES+` dictionary.
+
+==== Switch rhel10-sync to new minor version
+
+Switch `+RELEASEVERS+` in `+roles/batcave/files/rhel10-sync+` from `+10.0+` to `+10.1+`.
+
+==== Run the playbooks
+
+First, push the above edits. Then run the associated playbooks on _batcave01_:
+
+[source,console,subs="attributes"]
+----
+$ 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/openshift-apps/bodhi.yml
+----
+
+You will need to have someone enable sshd on autosign02 and then run:
+
+[source,console,subs="attributes"]
+----
+$ sudo ansible-playbook /srv/web/infra/ansible/playbooks/manual/autosign.yml
+----
+
+And then someone with the robosignatory passphrase will need to restart it.
+
+[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
+====
+
+=== Manually sync RHEL repos
+
+Normally RHEL repos are synced via a cron job,
+but run them manually the first time to ensure completion.
+Run the sync script on _batcave01_:
+
+[source,console,subs="attributes"]
+----
+$ sudo /mnt/fedora/app/fi-repo/rhel/rhel10/rhel10-sync
+----
+
+=== Koji tasks again
+
+Remove the CentOS snapshot external repos.
+
+[source,console,subs="attributes"]
+----
+$ koji remove-external-repo c10-snapshot-baseos    epel10.1-base
+$ koji remove-external-repo c10-snapshot-appstream epel10.1-base
+$ koji remove-external-repo c10-snapshot-crb       epel10.1-base
+----
+
+Add the RHEL 10.1 external repos.
+
+[source,console,subs="attributes"]
+----
+$ koji add-external-repo --mode bare --priority 10 --tag epel10.1-base rhel10.1-baseos    'https://infrastructure.fedoraproject.org/repo/rhel/rhel10/10.1/repos/$arch/baseos/'
+$ koji add-external-repo --mode bare --priority 20 --tag epel10.1-base rhel10.1-appstream 'https://infrastructure.fedoraproject.org/repo/rhel/rhel10/10.1/repos/$arch/appstream/'
+$ koji add-external-repo --mode bare --priority 30 --tag epel10.1-base rhel10.1-crb       'https://infrastructure.fedoraproject.org/repo/rhel/rhel10/10.1/repos/$arch/crb/'
+----
+
+Move epel10z floating tag to next minor version.
+
+[source,console,subs="attributes"]
+----
+$ koji remove-tag-inheritance epel10z epel10.0
+$ koji add-tag-inheritance epel10z epel10.1
+----
+
+Move epel10-infra floating tag to next minor version.
+
+[source,console,subs="attributes"]
+----
+$ koji remove-tag-inheritance epel10-infra epel10.0-build
+$ koji add-tag-inheritance epel10-infra epel10.1-build
+----
+
+=== Mirror tasks
+
+Log into the 
+https://mirrormanager.fedoraproject.org/admin/[MirrorManager Admin Panel]
+and reconfigure the repository redirects as follows.
+
+* epel-z-10 → epel-z-10.1
+* epel-z-debug-10 → epel-z-debug-10.1
+* epel-z-source-10 → epel-z-source-10.1
+* epel-z-testing-10 → epel-z-testing-10.1
+* epel-z-testing-debug-10 → epel-z-testing-debug-10.1
+* epel-z-testing-source-10 → epel-z-testing-source-10.1
+
+Run the following commands on _batcave01_ to switch symlinks on the mirrors.
+
+[source,console,subs="attributes"]
+----
+$ sudo ln -sfn 10.1 /pub/epel/10z
+$ sudo ln -sfn 10.1 /pub/epel/testing/10z
+----
+
+=== Final announcement
+
+Announce the completion of the retirement.
+Post this to Fedora Discussion in the
+https://discussion.fedoraproject.org/c/project/7[Project Discussion category]
+with the `#epel-sig` tag.
+Also send an email to the `epel-devel@` and `devel@` lists.
+
+== 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

