Skip to content

Commit b6bd8b0

Browse files
committed
Document Packit RPM distribution pipeline in ARCHITECTURE.md
The release pipeline diagram only covered the PyPI flow, but the same release event also fires Packit to build and ship Fedora and EPEL RPMs in parallel. Add the missing components (.packit.yaml, python-bitmath.spec, Packit, Copr, dist-git, Koji, Bodhi) to the component inventory and a second diagram showing the RPM distribution path alongside the existing PyPI path. Notes the known-stale target matrix (fedora-rawhide, fedora-42, epel-9, epel-10) so the document does not pretend to be current on that front.
1 parent 962269f commit b6bd8b0

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

ARCHITECTURE.md

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,13 @@ model.
169169
| PyPI Trusted Publishing | PyPI's OIDC verifier | Validates the OIDC token from the `publish.yml` workflow and authorizes the upload |
170170
| PyPI | pypi.org | The distribution channel; serves wheels and sdists over HTTPS to `pip` |
171171
| Read The Docs | bitmath.readthedocs.io | Hosts the rendered documentation; rebuilds on push to master |
172+
| `.packit.yaml` | Repository root | Packit configuration; declares which release events trigger Copr scratch builds, dist-git PRs, Koji builds, and Bodhi updates |
173+
| `python-bitmath.spec` | Repository root | RPM packaging spec used by Packit to build Fedora and EPEL RPMs |
174+
| Packit | packit.dev | Hosted automation that connects upstream releases to Fedora dist-git, Copr, Koji, and Bodhi based on `.packit.yaml` |
175+
| Copr | copr.fedorainfracloud.org/coprs/tbielawa/bitmath-ci | Fedora's build-on-demand farm; used for PR scratch builds and release-candidate builds |
176+
| Fedora dist-git | src.fedoraproject.org/rpms/python-bitmath | Where the official RPM source lives for each Fedora/EPEL branch |
177+
| Koji | koji.fedoraproject.org | Fedora's official build system; produces the RPMs that ship to users |
178+
| Bodhi | bodhi.fedoraproject.org | Fedora's update system; pushes Koji-built RPMs to stable for f42, epel9, and epel10 |
172179

173180
### Pipeline View
174181

@@ -218,6 +225,80 @@ model.
218225
+------------------------+
219226
```
220227

228+
### RPM Distribution Path (Fedora and EPEL via Packit)
229+
230+
The same `release: published` event that triggers `publish.yml` also
231+
fires the Packit pipeline. The two paths run in parallel and are
232+
independent of each other; PyPI consumers get the wheel, Fedora and
233+
EPEL consumers get an RPM. Production releases (clean `vX.Y.Z` tags)
234+
flow through `propose_downstream` to dist-git, Koji, and Bodhi.
235+
Release-candidate tags (`vX.Y.Z-rcN`) take a shorter path that only
236+
produces Copr builds for testing.
237+
238+
```
239+
+------------------------+
240+
| release: published |
241+
| (same event that fires |
242+
| the publish.yml flow |
243+
| above) |
244+
+-----------+------------+
245+
| reads .packit.yaml
246+
v + python-bitmath.spec
247+
+------------------------+
248+
| Packit |
249+
| |
250+
| clean vX.Y.Z tag: |
251+
| propose_downstream |
252+
| opens dist-git PRs |
253+
| for rawhide, f42, |
254+
| epel9, epel10 |
255+
| |
256+
| vX.Y.Z-rcN tag: |
257+
| copr_build only |
258+
+-----------+------------+
259+
| dist-git PR merged
260+
v
261+
+------------------------+
262+
| Fedora dist-git |
263+
| src.fedoraproject |
264+
| .org/rpms/ |
265+
| python-bitmath |
266+
+-----------+------------+
267+
| commit trigger
268+
v
269+
+------------------------+
270+
| Koji |
271+
| builds RPMs from |
272+
| each dist-git branch |
273+
+-----------+------------+
274+
| tagged build
275+
v
276+
+------------------------+
277+
| Bodhi |
278+
| update_type: |
279+
| enhancement; |
280+
| stable push for |
281+
| f42, epel9, epel10 |
282+
| (rawhide skipped) |
283+
+-----------+------------+
284+
| dnf install python-bitmath
285+
v
286+
+------------------------+
287+
| Fedora / EPEL consumer |
288+
+------------------------+
289+
```
290+
291+
The Copr scratch-build job that fires on every pull request is not
292+
shown above; it is a CI-style validation, not part of the release
293+
pipeline. It uses the same `.packit.yaml` and spec file to confirm
294+
the RPM still builds across the targeted Fedora and EPEL branches
295+
before a change merges.
296+
297+
**Known limitation**: the target matrix in `.packit.yaml` today is
298+
`fedora-rawhide`, `fedora-42`, `epel-9`, and `epel-10`. As new
299+
Fedora and EPEL releases land, that list needs to be refreshed. That
300+
work is tracked outside this document.
301+
221302
### Actions
222303

223304
1. **Version bump.** I edit `VERSION` to the new SemVer string.

0 commit comments

Comments
 (0)