Beginning the release process

Create a discussion thread for the release

Beginning a new release candidate should not be a unilateral decision. There is no requirement that an official vote be held prior to starting a release candidate, but there needs to be some discussion via a [DISCUSS] thread on to gauge whether the time is right for a release.

Development of Apache Guacamole is not halted when a release is being prepared, but the main development tree is forked. With this in mind, it is best to only begin the release process when:

All issues which should be part of the release must be tagged as such within JIRA (their “Fix Version” field should point to the release).

Example: the [DISCUSS] thread for 0.9.11-incubating

Create the release branch

When a release has been decided, release-specific branches need to be created to isolate the development line of the release from that of the main master branch. This allows development on master to continue, while allowing the contents of the release to remain within the agreed scope.

Create a new staging/[VERSION] branch for each of the following repositories, where [VERSION] is the version of the upcoming release, such as “0.9.11”:

Note that the guacamole-website repository does not get a release branch. The website points to release artifacts, etc. but is not itself part of the release.

Once the release branch is made, all release-specific changes must be made against the release branch only. Pull requests for changes related to the release must be merged directly to the release branch, with the release branch continually merged back to master with each such change.

Bump version numbers

The version numbers of Apache Guacamole’s various components do not get bumped until a release is being prepared. With the exception of any in-scope changes which are in-progress (which should usually be minimal), bumping the version numbers is one of the final development steps before the first release candidate.

Only the version numbers of modified components should be bumped. That said, bumping the version numbers of some components will result in their dependencies being modified, and thus bumped as well. For example:

Bumping the version of guacamole-server

The main locations which need modification within guacamole-server are:

Example: the pull request for bumping guacamole-server to 0.9.11-incubating

Bumping the version of guacamole-client

The main locations which need modification within guacamole-client are:

Example: the pull request for bumping guacamole-client to 0.9.11-incubating

Updating guacamole-manual accordingly

The manual (guacamole-manual) will also need to be updated to point to the latest versions of everything. In most cases, this involves simply replacing the old version number with the new version number wherever it occurs, but the process needs to be selective if not all components have been modified. In particular, watch out for:

Example: the pull request for bumping guacamole-manual to 0.9.11-incubating