Release Workflow#
We have regular releases and bugfix releases. We use 20.06
as an example for a regular release and 22.06.1
as an example for a bugfix release.
Release steps:
- Set the variables used in the following steps as in this example for a regular release: Set them as in this example for a bugfix release:
- Regular releases only: make sure that you are on the commit on which you want to base the release.
- Bugfix releases only: check out the release branch and cherry-pick each commit with hash
HASH
that you want to include: - Make sure that the list of contributors and copyright years in the
README.md
file are up to date. - Make sure the changelog (see ChangelogFormat) is up to date and committed. In particular:
- Make sure the changelog includes the line giving the date of the release.
- Add a new section like
## Fast Downward 20.06
or## Fast Downward 22.06.1
and gather all changes since the last release from the commit messages. Use an existing regular/bugfix release as an example.
- Make sure that the working directory is clean and that any last-minute changes from the above steps are committed.
- Update version number and create branches, tags and recipe files by running the
prepare-release.sh
script: - Verify the following manually:
- The
fast-downward-$RELEASE.tar.gz
tarball created in the previous step contains the appropriate files. - Branches and tags were created as expected. In a bugfix release, a tag like
22.06.1
should have been created on the existing release branch22.06
. - A new commit was created with the right recipe files and version changes.
- The
- Push all changes.
- Make sure that all Github actions are green on the release branch.
- Build the Docker image and push it to the Docker Hub. Note that we build the
20.06
/22.06
Docker image, not20.06.0
/22.06.1
. Under normal conditions, Docker needs root rights. The actual push to Docker hub needs appropriate credentials. Malte has them; not sure anyone else does. (Please edit if you do.) - Build the Apptainer image: Note: Ubuntu (*.deb) packages for Apptainer are available here: https://github.com/apptainer/apptainer/releases. Tested with Apptainer 1.3.6.
- Test:
- that we can build and successfully run the planner from the produced tarball
- that we can successfully run the planner from the produced Apptainer image, including a configuration using SoPlex
- that we can successfully run the planner from the produced Vagrantfile (automatically includes SoPlex; to also build the VM with CPLEX, you need an environment variable
DOWNWARD_LP_INSTALLERS
that points to a directory containing the CPLEX installer in the correct version)
- Regular releases only: create a documentation page for the release in the downward-markdown repository. We suggest starting from a copy of the page for the latest release in
docs/releases
.- Update the date and release version name.
- Update the links and references in section "Downloads".
- Update the changelog.
- Add the tarball to a new folder for the release in
docs/files
. - Add the Vagrant file created by the
prepare-release.sh
script to the same folder. - Create a link in
docs/releases/index.md
to the page of the new release.
- Bugfix releases only: update the documentation page of the release (for bugfix release
22.06.1
, reuse the release page22.06
). See the page for release 22.06 for an example. The Vagrantfile does not need to be updated for a bugfix release.- Adjust the date and mention the bugfix release version name.
- Update the changelog.
- Update the name of the tarball (it should include the bugfix number) and add the tarball to the respective folder in
docs/files
. - Update the bash instructions.
- Regular releases only: create a documentation version for the release in the downward-markdown repository.
- Branch from the
head-docs
branch to a new branchrelease-$TAG
and updateREADME.md
file to state that this is the branch for that release (instead of being auto-generated like the head-docs branch). This assumes that you make a release from the current HEAD of main in the Fast Downward code repository. If not, you can modify the branch as described for a bugfix release (next step). - Add an entry for the release in
releases.json
of themain
branch. Move thelatest
alias to the new release.
- Branch from the
- Bugfix releases only: create a documentation version for the release in the downward-markdown repository.
- Branch from the earlier
release-{$TAG-1}
branch to a new branchrelease-$TAG
and updateREADME.md
file to state that this is the branch for that bugfix release. - Make necessary changes in the documentation in this branch. If the generated documentation for the search plugins has changed, generate it with the
misc/autodocs/generate-docs.py
script in the code repository. It writes the documentation todocs/search
there. You just have to copy the content intodocs/search
of the new branch. - Update entry for the release in
releases.json
of themain
branch, e.g. from "24.06.0" to "24.06.1".
- Branch from the earlier
- Create a new release on github:
- On https://github.com/aibasel/downward/releases click on
Draft a new release
. - Set
Tag
torelease-$TAG
,Release Title
to$RELEASE
, andDescription
toFor information about this release, please visit the [Fast Downward website](https://www.fast-downward.org/$BRANCH/releases/$BRANCH/).
. - Click on
Publish Release
.
- On https://github.com/aibasel/downward/releases click on
- Send an announcement e-mail to the Fast Downward list including changelog information.
- Send the same announcement as a message in the Fast Downward Discord server.