Create Fedora IoT Release Candidates
To complete these steps you will need a valid Fedora account, with appropriate permissions in Koji, the Fedora buildsystem.
Review the current compose tag used for Fedora IoT and what is currently tagged and included.
koji list-tagged f[release_version]-iot
Untag any builds currently included:
koji untag-build --all f[release_version]-iot [build1 build2 ...]
Review the upstream Fedora ticket requesting the Release Candidates for a listing of all Fedora release Blockers and Freeze Exceptions that are needed for the compose. * An example ticket for Fedora 40 Beta Candidate Request. * An example ticket for Fedora 40 Final Candidate Request.
Add any builds specified by the Fedora QE team.
koji tag-build f[release_version]-iot [build1 build2 ...]
Compare the tagged builds with the Fedora compose tag (f40-compose):
koji list-tagged f[release_version]-compose
Log into the Fedora IoT compose host and run the compose for the pending release. Once the compose is complete, review the results for any outstanding deliverables.
Once the release has been declared Go!
Beta
When the release is signed off on Thursday after the Go/No-Go meeting. Open a ticket with Release Engineering to sign the deliverables. A request example from Fedora 39.
Once the release is signed, from the compose host create the directory and run the script to copy the release so it can be sync’d to the Fedora mirrors.
For the Beta release, note the destintation is the test
directory:
mkdir /pub/alt/iot/test/[release_version] ./sync-release.sh
Final
The final release requires an additional compose moving the development
release to stable
.
Update the signing key
Open a pull request to update the signing key for the specified release. Example from Fedora 41 GA.
Update Pungi configuration
Create a local fork of the Fedora IoT Pungi repository to make changes to the configuration files used to build Fedora IoT.
Update the the URL used for the compose, moving from latest
to the compose declared Gold in the Go/NoGo meeting. This example uses the Fedora 41 GA compose:
sed -i 's|branched/latest-Fedora-41/|41/Fedora-41-20241024.0/|g' fedora-iot.conf
Next update the branch from devel
to stable
:
sed -i 's|fedora/devel/|fedora/stable/|g' fedora-iot.conf
Update the sync-bootc-base-containers.sh
script, moving the development release to stable.
sed -i 's|current_stable="40"|current_stable="41"|g' sync-bootc-base-containers.sh sed -i 's|current_devel="41"|#current_devel="41"|g' sync-bootc-base-containers.sh
Review changes and open a pull request for peer review.
Update the ostree repository
Update the Fedora IoT ostree repository for the final compose. Update the branch from devel
to stable
and the release URL from branched to the release directory. The examples below were used for Fedora 41 GA.
sed -i 's|s/devel/%(arch)s/|s/stable/%(arch)s/|g' config.ini sed -i 's|fedora/devel/|fedora/stable/|g' *.yaml sed -i 's|fedora/linux/development/41|fedora/linux/releases/41|g' config.ini
Review changes and open a pull request for peer review.
Update Automated compose
Ensure the cron job used to automate the compose for stable-iot
is updated to point to the correct branch for the new stable release and delete the cronjob used for the development release, devel-iot
.
Release compose
After the changes have been merged, complete the GA compose. Once completed, open a ticket with Release Engineering to sign the deliverables. A request example from Fedora 39.
Want to help? Learn how to contribute to Fedora Docs ›