Skip to content

Release Process

Erik Jaegervall edited this page Apr 3, 2024 · 16 revisions

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

Checklist

  • 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 both this repo
  • Create github pre-release of kuksa.val
  • Merge release-branches (if used) back to master/main
  • Project lead informed
  • Official release approval received
  • Releases transformed to official releases

Release Process in short

  1. Merge all functional changes that should be included

  2. Perform testing according to https://github.com/eclipse/kuksa.val/wiki/Release-Testing

  3. When all findings are corrected and if needed retested, then tag and upload a tag

  4. If it works create a Github pre-release

  5. Ask project owners to review and approve release, When done transform to real release

Checking links

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

Or stricter:

markdown-link-check -q -a 403,200,404 *.md

To check all but ignore third party (submodule) code do from root repo folder:

find . -name \*.md -print0 | xargs -0 -n1 markdown-link-check -q -a 403,200,404

Update Rust versions

Find every Cargo.toml, replace version. Do not (by default) update edition, it concerns Rust edition, not package release date. Do a cargo update, make sure that version is as expected

erik@debian3:~/kuksa.val$ !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

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                        

Docker containers

Trigger builds manually

image

In total 3 builds, below plus kuksa-val:

image

Create KUKSA.val Github release

  • Tag the repo and upload tag
  • Trigger builds of databroker and databroker-cli for the new tag to build and publish new docker containers
  • Fetch *.zip binaries for databroker and databroker-cli

Take latest arm64/amd64/riscv64 images from latest build on main (or the right tag)

https://github.com/eclipse-kuksa/kuksa-databroker/actions/workflows/kuksa_databroker_build.yml

https://github.com/eclipse/kuksa.val/actions/workflows/kuksa_databroker_build.yml

https://github.com/eclipse/kuksa.val/actions/workflows/kuksa_databroker-cli_build.yml

Also Dash data and Third party licenses

I.e. in total 8 files shall be downloaded and added to the release, like this

image

  • Create a pre-release based on tag.
  • 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 *.zip files
  • Select "Set as a pre-release "

Checklist Template

  • Make sure we are feature complete
  • Check links
  • Update RUST versions
  • Perform testing
  • Create local release tag
  • Update Python requirement files
  • Update if needed kuksa-python-sdk and kuksa.val.feeders
  • Feeder test passed (Not Alpha components/features)
  • Create github tag
  • Docker containers have been triggered and generated and tested for both this repo
  • Create github pre-release of kuksa.val
  • Merge release-branches (if used) back to master/main
  • Project lead informed
  • Official release approval received
  • Releases transformed to official releases
Clone this wiki locally