Implement variables for EPEL minor version management

This introduces a set of variables for managing infrastructure changes
as EPEL minor versions change over time.  This should drastically
simplify our changes during EPEL mass branching.  This also drops the
earlier attempt of EPELCycleNumber and EPELBootstrapNumber variables,
which are no longer used.

Signed-off-by: Carl George <carlwgeorge@gmail.com>
This commit is contained in:
Carl George 2025-08-23 03:37:34 -05:00
commit 79259c6911
8 changed files with 51 additions and 51 deletions

View file

@ -116,7 +116,7 @@
# bodhi2/backend/files/koji_sync_listener.py
# This cronjob runs only once a day. The listener script runs reactively.
cron: name="owner-sync" minute="15" hour="4" user="root"
job="/usr/local/bin/lock-wrapper owner-sync '/usr/local/bin/owner-sync-pagure f44 f43 f42 f41 epel10.1 epel10.0 epel9 epel9-next epel8'"
job="/usr/local/bin/lock-wrapper owner-sync '/usr/local/bin/owner-sync-pagure f44 f43 f42 f41 {{ epel_tags | join(' ') }} epel9 epel9-next epel8'"
cron_file=update-koji-owner
user=apache
when: env == "production"

View file

@ -47,8 +47,9 @@ taglist = [
"f41",
"f41-container",
"f41-flatpak",
"epel10.1",
"epel10.0",
{% for tag in epel_tags %}
"{{ tag }}",
{% endfor %}
"epel9",
"epel9-next",
"epel8",

View file

@ -228,7 +228,7 @@ package_list =
# Stable releases: only adding and unblocking is allowed.
tag f{{FedoraCycleNumber}} f{{FedoraPreviousCycleNumber}} && match action add unblock :: allow
# EPEL: adding, blocking, and unblocking are allowed
tag epel8 epel9 epel9-next epel10.0 epel10.1 && match action add unblock block :: allow
tag epel8 epel9 epel9-next {{ epel_tags | join(' ') }} && match action add unblock block :: allow
}
# Infra people can themselves add/block/unblock packages in their
# tags without bothering admins.
@ -248,8 +248,9 @@ sidetag =
tag f42-build :: allow
tag f41-build :: allow
tag eln-build :: allow
tag epel10.1-build :: allow
tag epel10.0-build :: allow
{% for tag in epel_tags %}
tag {{ tag }}-build :: allow
{% endfor %}
tag epel9-next-build :: allow
tag epel9-build :: allow
tag epel8-build :: allow

View file

@ -248,29 +248,19 @@ handlers = ["console"]
# Gated bodhi updates
{% for tag in epel_tags %}
[[consumer_config.koji_instances.primary.tags]]
from = "epel10.1-signing-pending"
to = "epel10.1-testing-pending"
key = "{{ (env == 'production')|ternary('epel-10', 'testkey') }}"
keyid = "{{ (env == 'production')|ternary('e37ed158', 'd300e724') }}"
from = "{{ tag }}-signing-pending"
to = "{{ tag }}-testing-pending"
key = "{{ (env == 'production')|ternary('epel-{}'.format(epel_major), 'testkey') }}"
keyid = "{{ (env == 'production')|ternary(epel_key, 'd300e724') }}"
[consumer_config.koji_instances.primary.tags.sidetags]
pattern = 'epel10.1-build-side-<seq_id>'
from = '<sidetag>-signing-pending'
to = '<sidetag>-testing-pending'
trusted_taggers = ['bodhi']
[[consumer_config.koji_instances.primary.tags]]
from = "epel10.0-signing-pending"
to = "epel10.0-testing-pending"
key = "{{ (env == 'production')|ternary('epel-10', 'testkey') }}"
keyid = "{{ (env == 'production')|ternary('e37ed158', 'd300e724') }}"
[consumer_config.koji_instances.primary.tags.sidetags]
pattern = 'epel10.0-build-side-<seq_id>'
pattern = '{{ tag }}-build-side-<seq_id>'
from = '<sidetag>-signing-pending'
to = '<sidetag>-testing-pending'
trusted_taggers = ['bodhi']
{% endfor %}
[[consumer_config.koji_instances.primary.tags]]
from = "epel9-signing-pending"

View file

@ -1,2 +0,0 @@
---
EPELCycleNumber: 9

26
vars/all/EPEL.yaml Normal file
View file

@ -0,0 +1,26 @@
---
# The most recent EPEL major version.
epel_major: 10
# The GPG key ID for this EPEL major version.
epel_key: "e37ed158"
# The EPEL minor version that matches CentOS. Set to false once CentOS reaches
# EOL, i.e. the start of the RHEL maintenance phase.
epel_minor: 1
# The EPEL minor version that has been branched, but doesn't have a
# mathing RHEL minor version released yet. Set to false if not available.
epel_branched_minor: false
# The EPEL minor version that matches RHEL. Set to false prior to the RHEL GA.
epel_z_minor: 0
# Assemble a list of EPEL tag names. When a minor version is set to false,
# that list item will be an empty string, which is then removed with select in
# the epel_tags list.
epel_tags_in:
- "{{ '' if epel_minor is false else 'epel{}.{}'.format(epel_major, epel_minor) }}"
- "{{ '' if epel_branched_minor is false else 'epel{}.{}'.format(epel_major, epel_branched_minor) }}"
- "{{ '' if epel_z_minor is false else 'epel{}.{}'.format(epel_major, epel_z_minor) }}"
epel_tags: "{{ epel_tags_in | select }}"

View file

@ -1,2 +0,0 @@
---
EPELBootstrapNumber: "{{ EPELCycleNumber|int + 1 }}.0"

View file

@ -37,31 +37,17 @@ FedoraPreviousPrevious.yaml - true if there is a previous previous, otherwise fa
FedoraRawhideNumber.yaml - The number of the current rawhide
Frozen.yaml - If infra (InfraFrozen) and the pending release (NextReleaseFrozen) are frozen or not, true or false
This directory also contains variables (one per file) that are loaded into
various playbooks. The first set of these is to allow templates to
handle the various stages of EPEL development so we don't have to
remember all the places that need changing.
There's 3 states for EPEL releases:
The second set of these is to allow templates to handle the various stages of
EPEL minor versions so we don't have to remember all the places that need
changing. These only apply to EPEL 10 going forward, as previous major
versions didn't have minor versions.
1:
There are several states that an EPEL minor version will move through.
EPEL N (stable)
EPEL N-1 (stable)
* epel_minor: built from epelX branch against CentOS
* epel_branched_minor: built from epelX.Y branch against CentOS snapshot
* epel_z_minor: built from epelX.Y branch against RHEL
2: We enable branch requests for a new release:
EPEL N+1 (bootstrap)
EPEL N (stable)
EPEL N-1 (stable)
3. That release is launched:
EPEL N (stable)
EPEL N-1 (stable)
EPEL N-2 (stable)
These are controlled by some variables:
00-EPELCycleNumber.yaml - The current stable release
EPELBootstrapNumber.yaml - The number of the bootstrap release
At any given time, we may have one, two, or three active minor version branches
for an EPEL major version. See the comments in EPEL.yaml for more details.