|
| 1 | +# Standard Release Process |
| 2 | + |
| 3 | +The following document is a description of the standard release process of |
| 4 | +Zarhus-related images. Precise steps and differences from the standard |
| 5 | +process will be described in layer-specific documentation. |
| 6 | + |
| 7 | +## Process steps |
| 8 | + |
| 9 | +1. Make sure that everything that should go into the given release is merged |
| 10 | + into `develop`. |
| 11 | +2. Bump `DISTRO_VERSION` in the `conf/distro/<distro-name>.conf` file. |
| 12 | +3. Fill up the `CHANGELOG.md` file with latest changes. |
| 13 | + - Run `generate-changelog.sh` to generate the change notes for your release. |
| 14 | + - Use the `generate-changed-recipes` script to print the list of changes in |
| 15 | + recipe versions. The script uses build manifests - lists of recipes |
| 16 | + contained in the image along with their versions. You must provide your |
| 17 | + manifest and the current release's manifest as arguments to the script. |
| 18 | + The latter can be found in the latest release's section in the GitHub |
| 19 | + release pages. The current manifest can be found under the Yocto working |
| 20 | + directory in |
| 21 | + `build/tmp/deploy/images/{machine-name}/{image-name}.manifest`. |
| 22 | + - Paste the script output into your release's section in `CHANGELOG.md`. |
| 23 | + Additionally, you must explain why those changes were made and what they |
| 24 | + introduce (unless the commit messages listed by `generate-changelog.sh` |
| 25 | + already explain that). |
| 26 | + - Describe any additional changes. |
| 27 | +4. Commit and push the changelog. |
| 28 | +5. Merge the changes from `develop` into `main`. |
| 29 | +6. Create and push a tag to `main` that matches the newly bumped version, with |
| 30 | + `v` added at the beginning (e.g. `v2.0.1-rc1`). |
| 31 | +7. Publish the release on GitHub. The release description should be the same as |
| 32 | + the release notes for that version. The following artifacts should be |
| 33 | + uploaded: The image (usually as `wic.gz` and `wic.bmap`), the manifest and |
| 34 | + `sha256` sum of each of those files. Additionally, if possible, upload the |
| 35 | + signatures of files (`*.sha256.sig`). In case of a `release candidate`, you |
| 36 | + should publish it as a pre-release. |
| 37 | + |
| 38 | +## Versioning scheme |
| 39 | + |
| 40 | +`Zarhus`-related layers are versioned using the |
| 41 | +[semantic versioning](https://semver.org) scheme with the following |
| 42 | +clarifications and additions: |
| 43 | + |
| 44 | +- `PATCH` version is incremented with each released `HOTFIX` |
| 45 | +- `PATCH` version is zeroed with the increment of `MINOR` or `MAJOR` versions |
| 46 | +- `MINOR` version is incremented with every `FEATURE` release (may include more |
| 47 | + than one feature) unless `MAJOR` version is incremented |
| 48 | +- `MINOR` version is zeroed with the increment of `MAJOR` version |
| 49 | +- `MAJOR` version is incremented according to the project road map. Project road |
| 50 | + map should define at which point in time or with which feature set next |
| 51 | + `MAJOR` release is ready. |
| 52 | + |
| 53 | +### Release candidate |
| 54 | + |
| 55 | +Depending on the need of a particular software project, a `pre-release` |
| 56 | +(`release candidate`) version may be released. The version format must follow |
| 57 | +the [pre-release semver versioning scheme](https://semver.org/#spec-item-9). |
| 58 | +Generally, we shall use the following scheme for `release candidates`: |
| 59 | + |
| 60 | +```text |
| 61 | +MAJOR.MINOR.PATCH-rc.RC_ID |
| 62 | +``` |
| 63 | + |
| 64 | +where the `RC_ID` starts with 1. |
0 commit comments