deb-mock/docs/Releasing-Mock.md
robojerk 4c0dcb2522
Some checks failed
Build Deb-Mock Package / build (push) Successful in 54s
Lint Code / Lint All Code (push) Failing after 1s
Test Deb-Mock Build / test (push) Failing after 36s
enhance: Add comprehensive .gitignore for deb-mock project
- Add mock-specific build artifacts (chroot/, mock-*, mockroot/)
- Include package build files (*.deb, *.changes, *.buildinfo)
- Add development tools (.coverage, .pytest_cache, .tox)
- Include system files (.DS_Store, Thumbs.db, ._*)
- Add temporary and backup files (*.tmp, *.bak, *.backup)
- Include local configuration overrides (config.local.yaml, .env.local)
- Add test artifacts and documentation builds
- Comprehensive coverage for Python build system project

This ensures build artifacts, chroot environments, and development
tools are properly ignored in version control.
2025-08-18 23:37:49 -07:00

189 lines
6.3 KiB
Markdown

---
layout: default
title: How do we release Mock
---
# Mock versions
We keep the "major.minor" versioning scheme, and we bump the "major" number when
some important/notable new feature appears, or when breaking change happens.
For the `mock-core-configs` package, the `major` number reflects the latest
Fedora **branched** version from Rawhide.
Note we maintain multiple Mock versions in parallel. See `README.md` file
for more info. You might need to repeat the steps described in this document
multiple times. Even though `tito` should have appropriate releasers
configured, please be careful when updating various distributions and use the
correct branch version.
## Fedora Rawhide branching
When you plan to release a new mock-core-configs for a new Fedora version being
branched from Rawhide, there's a script in releng/rawhide-branching.sh that
helps you to setup a correct configuration layout.
For Rawhide releases, you'll primarily be updating mock-core-configs only. Follow the
steps in the release checklist, but focus only on the mock-core-configs parts.
Be sure to use the `--config-only` flag when generating release notes.
## Release checklist overview
0. Make sure all GitHub CI checks are passing for the latest commit
1. Change to the correct local branch, e.g. `main`
$ git checkout main
2. Fetch git remote, and propose local-only patches (if any)
$ git pull --rebase main
3. If you want to propose the release through a PR, switch to a new branch
$ git checkout -b release-2024-05-15
5. Prepare release notes. Use the going-to-be-released version, not
the current version.
For a full release (both mock and mock-core-configs):
$ sudo dnf install towncrier
$ ./releng/generate-release-notes --use-version 5.1
$ vim docs/Release-Notes-5.1.md # modify manually!
For a mock-core-configs only release:
$ ./releng/generate-release-notes --use-version 40.3 --config-only
$ vim docs/Release-Notes-Configs-40.3.md # modify manually!
Don't forget to manually modify ./docs/index.md and mention the new release.
Add list of contributing authors:
For mock:
$ git log mock-4.1-1..HEAD --format="%aN" mock/ | sort | uniq
For mock-core-configs:
$ git log mock-core-configs-38.1-1..HEAD --format="%aN" mock-core-configs/ | sort | uniq
6. Commit all the pending changes
7. On your box (you need push-access rights), tag the git tree:
For a full release (both mock and mock-core-configs):
# First tag mock-core-configs
$ cd ./mock-core-configs
$ tito tag --use-version 40.3 # major.minor according to policy
# Then update mock's spec and tag mock
# Update 'Conflicts: mock-core-configs < ??' in mock.spec
$ cd ./mock
$ tito tag --use-version 5.1 # major.minor according to policy
For a mock-core-configs only release:
$ cd ./mock-core-configs
$ tito tag --use-version 40.3 # major.minor according to policy
For a mock only release:
$ cd ./mock
$ tito tag --use-version 5.1 # major.minor according to policy
8. Push the tito-generated commits to the upstream repo
Suggestion: You can calmly avoid doing direct pushes. You can simply remove
the local-only git tag created by tito, and submit PR the normal way:
$ git tag -d mock-4.1-1 # drop tag
$ git branch new-version proposal
$ git push yourremote new-proposal
...
remote: Create a pull request for 'new-proposal' on GitHub by visiting:
remote: https://github.com/praiskup/mock/pull/new/new-proposal
...
These tito-generated commits can calmly be squashed, updated, etc. (you may
include documentation fixes there). Just don't forget to re-add the dropped
tag back (if dropped) 'git tag mock-4.1-1'. Alternatively just `git push`
the commits.
9. Push the git tags upstream, e.g.
For mock-core-configs:
$ git push origin mock-core-configs-40.4-1
For mock:
$ git push origin mock-5.1-1
10. Release for EPEL and Fedora
$ # make sure that .tito/releasers.conf is up to date
For mock-core-configs:
$ cd ./mock-core-configs
$ tito release fedora-git-all
For mock:
$ cd ./mock
$ tito release fedora-git-all
11. publish tgz
- The `tito release` calls above uploaded the tarball to Fedora DistGit
lookaside cache. You can simply use those. Alternative you should be able
to generate the same (byte-by-byte) tarball via `tito build --tgz`
- Go to the [releases page](https://github.com/rpm-software-management/mock/releases),
- click "Draft new release"
- Choose existing tag. E.g., `mock-1.4.9-1 @ main`
- Enter the same tag as release "title"
- Attach the tarball binary
12. Once the builds finish (successfully) you should push the just built packages
to their respective testing repositories. This can be done either with the
Bodhi WebUI at https://bodhi.fedoraproject.org/ or if there are no other
package dependencies, using the 'fedpkg update' command (you can specify
multiple builds, even for multiple fedora/epel versions, like
`[mock-1.35-1.fc38, mock-1.35-1.fc37, ...]`). Note that you do not need to
do this for the Fedora Rawhide build since it automatically gets pushed to
testing.
13. Announce the release
We typically send announcement e-mails to
[bulidsys@lists.fedoraproject.org](https://lists.fedoraproject.org/archives/list/buildsys@lists.fedoraproject.org/),
and depending on the severity of the release also to
[devel@lists.fedoraproject.org](https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/).
We also announce in [Fosstodon CPT's space](https://fosstodon.org/@fedoracpt).
For a full release (both mock and mock-core-configs):
Subject: Mock v4.0 released (and mock-core-configs v38.5)
Hello maintainers!
I'm glad I can announce that we have a new release of Mock v
(the chroot build environment manager for building RPMs).
<SHORT SUMARY ann LIST OF IMPORTANT CHANGES>
Full release notes:
https://rpm-software-management.github.io/mock/Release-Notes-4.0
The updated packages are in Bodhi:
[Fedora 38]:
[Fedora 37]:
[EPEL 9]:
[EPEL 8]:
Happy building!