The Calamares release process ============================= > As releases from *master* are now rolling when-they-are-ready releases, > some of these steps no longer are followed. In particular, -RC releases > are not done anymore (although the RC variable is set in `CMakeLists.txt` > to avoid accidents) and most things are automated through the release > script [RELEASE.sh](RELEASE.sh) #### (0) A week in advance * (Only releases from master) Run [Coverity scan][coverity], fix what's relevant. The Coverity scan runs automatically once a week on master. * Build with clang -Weverything, fix what's relevant. ``` rm -rf build ; mkdir build ; cd build CC=clang CXX=clang++ cmake .. && make ``` * Make sure all tests pass. ``` make make test ``` Note that *all* means all-that-make-sense. The partition-manager tests need an additional environment variable to be set for some tests, which will destroy an attached disk. This is not always desirable. There are some sample config-files that are empty and which fail the config-tests. * (Only releases from master) Notify [translators][transifex]. In the dashboard there is an *Announcements* link that you can use to send a translation announcement. [coverity]: https://scan.coverity.com/projects/calamares-calamares?tab=overview [transifex]: https://www.transifex.com/calamares/calamares/dashboard/ #### (1) Preparation * Bump version in `CMakeLists.txt`, *CALAMARES_VERSION* variables, and set RC to a non-zero value (e.g. doing -rc1, -rc2, ...). Push that. * Check `README.md` and everything `ci/HACKING.md`, make sure it's all still relevant. Run `ci/calamaresstyle` to check the C++ code style. Run pycodestyle on recently-modified Python modules, fix what makes sense. * Check defaults in `settings.conf` and other configuration files. * (Only releases from master) Pull latest translations from Transifex. We only push / pull translations from master, so longer-lived branches (e.g. 3.1.x) don't get translation updates. This is to keep the translation workflow simple. ``` sh ci/txpull.sh ``` * (Only releases from master) Update the list of enabled translation languages in `CMakeLists.txt`. Check the [translation site][transifex] for the list of languages with fairly complete translations. #### (2) Tarball * Create tarball: `git-archive-all -v calamares-1.1-rc1.tar.gz` or without the helper script, ``` V=calamares-3.1.5 git archive -o $V.tar.gz --prefix $V/ master ``` Double check that the tarball matches the version number. * Test tarball (e.g. unpack somewhere else and run the tests from step 0). #### (3) Tag * Set RC to zero in `CMakeLists.txt` if this is the actual release. * `git tag -s v1.1.0` Make sure the signing key is known in GitHub, so that the tag is shown as a verified tag. Do not sign -rc tags. * Generate MD5 and SHA256 checksums. * Upload tarball. * Announce on mailing list, notify packagers. * Write release article. #### (4) Release day * Publish tarball. * Update download page. * Publish release article on `calamares.io`. * Publicize on social networks. * Close associated milestone on GitHub if this is the actual release. * Publish blog post.