-
Notifications
You must be signed in to change notification settings - Fork 19
Release Process
This page describes how to release components in this repository. For testing purposes we need components in other repositories, and if it is planned to release multiple components it could be an idea to perform the release processes and release testing in parallel.
For reference:
See also content of previous releases
- Make sure we are feature complete
- Check links
- Update RUST versions
- Perform testing
- Create local release tag
- Create github tag
- Docker containers have been triggered and generated and tested for this repo
- Create github pre-release of kuksa-databroker
- Merge release-branches (if used) back to master/main
- Project lead informed
- Official release approval received
- Releases transformed to official releases
-
Merge all functional changes that should be included
-
Perform testing according to https://github.com/eclipse/kuksa.val/wiki/Release-Testing
-
When all findings are corrected and if needed retested, then tag and upload a tag
-
If it works create a Github pre-release
-
Ask project owners to review and approve release, When done transform to real release
The commands below can be used to verify that links in markdown files works as expected
npm install -g markdown-link-check
find . -name \*.md -print0 | xargs -0 -n1 markdown-link-check
markdown-link-check
may give some false positives, they can be suppressed by accepting certain error codes (in addition to 200). A possible example is below:
markdown-link-check -q -a 200,404 *.md
To check all but ignore some error codes do from root repo folder:
find . -name \*.md -print0 | xargs -0 -n1 markdown-link-check -q -a 403,200,404
As of today CI ignores 200 and 404, and due to limitations in markdown-link-check it also ignores some links where false positive 403 errors are otherwisegiven. It is anyway trecommended to run manually before release including 403 and analyze what needs to be changed.
Find every Cargo.toml
, replace version. Do not (by default) update edition, it concerns Rust edition, not package release date.
Can be done by running scripts/prepare_release.sh <version>
Do a cargo update, make sure that version is as expected
erik@debian3:~/kuksa-databroker$ !2247
cargo update
Updating crates.io index
Updating databroker v0.3.1 (/home/erik/kuksa.val/kuksa_databroker/databroker) -> v0.4.0
Updating databroker-cli v0.3.1 (/home/erik/kuksa.val/kuksa_databroker/databroker-cli) -> v0.4.0
Updating databroker-examples v0.3.1 (/home/erik/kuksa.val/kuksa_databroker/databroker-examples) -> v0.4.0
Updating databroker-proto v0.3.1 (/home/erik/kuksa.val/kuksa_databroker/databroker-proto) -> v0.4.0
Also update lib/Cargo.lock
Alternatively we could update only databroker, see https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html, but likely good to update everything
Verify that databroker-cli reports right version quit
cargo run --bin databroker-cli
⠀⠀⠀⢀⣤⣶⣾⣿⢸⣿⣿⣷⣶⣤⡀
⠀⠀⣴⣿⡿⠋⣿⣿⠀⠀⠀⠈⠙⢿⣿⣦⠀
⠀⣾⣿⠋⠀⠀⣿⣿⠀⠀⣶⣿⠀⠀⠙⣿⣷
⣸⣿⠇⠀⠀⠀⣿⣿⠠⣾⡿⠃⠀⠀⠀⠸⣿⣇⠀⠀⣶⠀⣠⡶⠂⠀⣶⠀⠀⢰⡆⠀⢰⡆⢀⣴⠖⠀⢠⡶⠶⠶⡦⠀⠀⠀⣰⣶⡀
⣿⣿⠀⠀⠀⠀⠿⢿⣷⣦⡀⠀⠀⠀⠀⠀⣿⣿⠀⠀⣿⢾⣏⠀⠀⠀⣿⠀⠀⢸⡇⠀⢸⡷⣿⡁⠀⠀⠘⠷⠶⠶⣦⠀⠀⢠⡟⠘⣷
⢹⣿⡆⠀⠀⠀⣿⣶⠈⢻⣿⡆⠀⠀⠀⢰⣿⡏⠀⠀⠿⠀⠙⠷⠄⠀⠙⠷⠶⠟⠁⠀⠸⠇⠈⠻⠦⠀⠐⠷⠶⠶⠟⠀⠠⠿⠁⠀⠹⠧
⠀⢿⣿⣄⠀⠀⣿⣿⠀⠀⠿⣿⠀⠀⣠⣿⡿
⠀⠀⠻⣿⣷⡄⣿⣿⠀⠀⠀⢀⣠⣾⣿⠟ databroker-cli
⠀⠀⠀⠈⠛⠇⢿⣿⣿⣿⣿⡿⠿⠛⠁ v0.4.0
Use X.Y.Z
only for the commit that matches the release.
For other use-cases use a pre-release identifier.
- For development branches set version to
X.Y.Z-pre.0
, for example0.4.7-dev.0
where the number is a possible number for the next release on that branch. In general it does not matter that much if you after release of0.4.6
sets it to0.4.7-dev.0
or0.5.0-dev.0
, the important part is to highlight that this is a development version. You should never create a tag or release with a "dev" version - If you need to tag and/or release something for testing purposes, use
alpha
orrc
as prerelease-tag
References:
- https://semver.org/
- https://users.rust-lang.org/t/alpha-beta-rc-with-cargo-semantic-versioning/69799
Create and upload tag
Then trigger build
(we could later possibly let it be automatically triggered by the tag push)
Right now starting from main will not create a valid release due to tag name selected
- Manually select previous release and generate release notes
- Change tag to only X.Y.Z if needed
- Copy instructions based on previous release (part above
## What's Changed
), i.e. information on how to fetch from docker - Also say something about the included files
- Select "Set as a pre-release "
Trigger databroker and databroker-cli builds manually (only needed if NOT triggering automated flow above)
- Tag the repo and upload tag
- Trigger build of https://github.com/eclipse-kuksa/kuksa-databroker/actions/workflows/create_draft_release.yml
- Then the new release will show up at https://github.com/eclipse-kuksa/kuksa-databroker/releases
- For now, the release name shall be
KUKSA Databroker X.Y.Z
- Manually select previous release and generate release notes
- Copy instructions based on previous release (part above
## What's Changed
), i.e. information on how to fetch from docker - Also say something about the included files
- Select "Set as a pre-release "
- Create
release/X.Y.Z
, e.g.release/0.5.0
. This is if anyone prefers a branch, possibly together with a tag, to reference this particular release. Seems like Yocto/AGL benefits from this - Create a patch branch of the form
0.5.X
, this is for patches, if any
It is the official project lead that needs to approve that the release is marked as an official release and as latest release
Update to something like 0.6.0-dev.0
Can be done by running scripts/prepare_release.sh <version>
- Make sure we are feature complete
- Check links
- Update RUST versions
- Perform testing
- Create local release tag
- Create github tag
- Docker containers have been triggered and generated and tested for this repo
- Create github pre-release of kuksa-databroker
- Merge release-branches (if used) back to master/main
- Project lead informed
- Official release approval received
- Releases transformed to official releases