2015-11-20 06:12:59 +01:00
|
|
|
Release preparation
|
|
|
|
|
===================
|
|
|
|
|
:Author: Ichthyo
|
2025-11-28 21:21:13 +01:00
|
|
|
:Date: Nov 2025
|
2015-11-20 06:12:59 +01:00
|
|
|
|
2025-12-09 23:11:46 +01:00
|
|
|
We have nothing to show yet and don't provide public releases --
|
2015-11-20 06:12:59 +01:00
|
|
|
but we ought to rehearse and practice the release process.
|
|
|
|
|
This document contains some hints and a checklist of steps
|
|
|
|
|
to perform for a proper release.
|
|
|
|
|
|
2025-11-28 21:21:13 +01:00
|
|
|
IMPORTANT: Lumiera uses link:{ldoc}/technical/code/GitBranching.html[Git-flow]
|
|
|
|
|
for the organisation of release branches and tags. Releases are still
|
|
|
|
|
considered ``experimental'' and happen infrequently, so that a full
|
|
|
|
|
automation of these steps was not yet considered. So please be
|
|
|
|
|
sure to adhere to the established conventions.
|
|
|
|
|
|
2025-12-09 23:11:46 +01:00
|
|
|
.Each Release has three phases
|
|
|
|
|
- Development
|
|
|
|
|
- Convergence
|
|
|
|
|
- Preparation
|
|
|
|
|
|
|
|
|
|
During the »convergence phase«, all participants must prioritise code stability.
|
|
|
|
|
After the »release cut«, development can resume freely on branch `integration`,
|
|
|
|
|
while »release preparation« ensues on the _release branch_. The
|
|
|
|
|
published documentation branch and the website will follow suit on the
|
|
|
|
|
release branch. Please mark the current phase on the
|
|
|
|
|
link:{ldoc}/devel/Status.html[Development Status] page.
|
|
|
|
|
|
2025-11-28 21:21:13 +01:00
|
|
|
|
2015-11-20 06:12:59 +01:00
|
|
|
Steps to perform for a release
|
|
|
|
|
------------------------------
|
|
|
|
|
|
2025-11-28 21:21:13 +01:00
|
|
|
. Pre-Release _»convergence phase«_
|
|
|
|
|
|
|
|
|
|
- care for code stability and refrain from breaking changes
|
2025-12-09 23:11:46 +01:00
|
|
|
- announce and mark »convergence« on the link:{ldoc}/devel/Status.html[Status] page.
|
2025-11-28 21:21:13 +01:00
|
|
|
- verify that the _current version number_ is already set to
|
|
|
|
|
the version number expected for the upcoming release, yet
|
|
|
|
|
decorated with the `~dev` suffix -- if it turns out that
|
|
|
|
|
the upcoming release shall make a _major version bump,_
|
|
|
|
|
then the expected version must be set *now*. Once
|
|
|
|
|
the release branch has been forked, the version
|
|
|
|
|
must not be changed any more.
|
|
|
|
|
|
|
|
|
|
. Release cut
|
|
|
|
|
|
|
|
|
|
- create the _Release Branch_ with name `rel/#.#.#`
|
|
|
|
|
- after that fork, immediately perform the *version bump*
|
|
|
|
|
on branch `integration`
|
|
|
|
|
+
|
|
|
|
|
--
|
|
|
|
|
** use the Script: `admin/buildVersion --bump=maj|min|rev --suffix=dev`
|
|
|
|
|
** typical usage
|
|
|
|
|
----
|
|
|
|
|
admin/setVersion `admin/buildVersion.py --bump -s dev`
|
|
|
|
|
----
|
|
|
|
|
--
|
|
|
|
|
+
|
|
|
|
|
[IMPORTANT]
|
|
|
|
|
what you set here *must* be the next version _after the release_
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. Release preparation: clean-up obsolete information
|
2015-11-20 06:12:59 +01:00
|
|
|
|
|
|
|
|
- Debian package descriptions
|
|
|
|
|
- Build-Tutorial
|
|
|
|
|
|
|
|
|
|
* building from source
|
|
|
|
|
* building the debian way
|
|
|
|
|
* contributing
|
|
|
|
|
|
|
|
|
|
- technical/build/Dependencies
|
2025-11-28 21:21:13 +01:00
|
|
|
- check and update *Release-Notes*
|
|
|
|
|
|
|
|
|
|
* check that 'README' is up-to-date
|
|
|
|
|
* add a new summary entry into 'NEWS'
|
|
|
|
|
* check the 'AUTHORS' info
|
|
|
|
|
|
|
|
|
|
** ensure that the copyright time span
|
|
|
|
|
mentioned for each relevant contributor
|
|
|
|
|
is correct and possibly spans the current year
|
|
|
|
|
** it is _crucial_ (legally relevant) that at least
|
|
|
|
|
the person preparing the release and thus acting as
|
|
|
|
|
publisher is mentioned here with the _current year_
|
|
|
|
|
** ensure that a correct summary is presented in the "About"
|
|
|
|
|
dialog of the GTK-UI. The necessary config is currently (2025)
|
|
|
|
|
maintained in the file 'setup.ini' (the info displayed here
|
|
|
|
|
should be the list of all _significant contributors_ and
|
|
|
|
|
cover the whole time span from 2007 until _NOW_)
|
|
|
|
|
|
|
|
|
|
* check that the 'LICENSE' file mentions the core authors,
|
|
|
|
|
again with the correct copyright time span
|
|
|
|
|
|
|
|
|
|
. Test phase
|
|
|
|
|
|
|
|
|
|
- even while we have automated tests, be sure at least to do
|
|
|
|
|
some ``smoke test''. Ideally have _someone else_ use the new
|
|
|
|
|
version on a real-world project.
|
|
|
|
|
- depending on the circumstances, possibly set a _release candidate_ version, +
|
|
|
|
|
using a `--suffix=rc.#`
|
|
|
|
|
|
|
|
|
|
. Publish the Release
|
|
|
|
|
|
|
|
|
|
- merge the release branch into `master`
|
|
|
|
|
- set the version again, this time without any `--suffix`
|
|
|
|
|
- amend the merge commit to _include that final version_
|
|
|
|
|
- set the *Release Tag* in accordance with the
|
|
|
|
|
link:{ldoc}/devel/rfc/VersionNumberScheme.html[Version-Number scheme].
|
|
|
|
|
- fast forward also the _release branch_ to sit at that tag
|
|
|
|
|
- *publish* by pushing into git://git/lumiera/org/LUMIERA
|
|
|
|
|
|
|
|
|
|
** the latest state of `master`
|
|
|
|
|
** the release tag
|
|
|
|
|
|
|
|
|
|
. Back-Merge: +
|
|
|
|
|
**never loose any release work**
|
|
|
|
|
|
|
|
|
|
- `git checkout integration`
|
|
|
|
|
- `git merge rel/#.#.#`
|
|
|
|
|
- work through possible merge conflicts and resolve them
|
|
|
|
|
- conflicts on the version number *must* be resolved in favour
|
|
|
|
|
of the _next version number_ -- you can perform that as an
|
|
|
|
|
extra step, _after the merge_ is otherwise complete:
|
|
|
|
|
`admin/buildVersion --bump ... --suffix=dev` (and then
|
|
|
|
|
amend the merge!)
|
|
|
|
|
- *delete* the release-branch
|
|
|
|
|
- push this delete to the public repos, incl the main repo!
|
|
|
|
|
|
|
|
|
|
. Packaging...
|
|
|
|
|
|
|
|
|
|
- merge release-tag -> branch `deb`
|
2015-11-20 06:12:59 +01:00
|
|
|
- verify the package description
|
2025-11-28 21:21:13 +01:00
|
|
|
- have a look at manpages and similar packaging documents; +
|
|
|
|
|
notably look into 'debian/README.Debian', since we deliver
|
|
|
|
|
that instead of 'README' for the Debian users, since they
|
|
|
|
|
do not need instructions how to build the software...
|
|
|
|
|
- update 'debian/control' to reflect current version dependencies
|
|
|
|
|
- have a look into 'debian/rules' (e.g. build flags and similar)
|
|
|
|
|
- update 'debian/copyright' to reflect authors and copyright!
|
2015-11-20 06:12:59 +01:00
|
|
|
|
2025-11-28 21:21:13 +01:00
|
|
|
. Delivery
|
2015-11-20 06:12:59 +01:00
|
|
|
|
|
|
|
|
- use whatever infrastructure is available to build packages.
|
2025-11-28 21:21:13 +01:00
|
|
|
- verify packages can be installed on a pristine VM / Container
|
2015-11-20 06:12:59 +01:00
|
|
|
- upload packages to debian depot or commit them to PPAs
|
|
|
|
|
- clean-up and discard obsoleted old distributions and packages
|
|
|
|
|
|
2025-11-28 21:21:13 +01:00
|
|
|
. Close the **Release Ticket**
|
2025-12-09 23:11:46 +01:00
|
|
|
and update the link:{ldoc}/devel/Status.html[Status] page.
|
2015-11-20 06:12:59 +01:00
|
|
|
|