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
HASHthat you want to include: - Make sure that the list of contributors and copyright years in the
README.mdfile 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.06or## Fast Downward 22.06.1and 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.shscript: - Verify the following manually:
- The
fast-downward-$RELEASE.tar.gztarball 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.1should 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.06Docker 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_INSTALLERSthat 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.shscript to the same folder. - Create a link in
docs/releases/index.mdanddocs/releases/SUMMARY.mdto 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-docsbranch to a new branchrelease-$TAGand updateREADME.mdfile 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.jsonof themainbranch. Move thelatestalias 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-$TAGand updateREADME.mdfile 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.pyscript in the code repository. It writes the documentation todocs/searchthere. You just have to copy the content intodocs/searchof the new branch. - Update entry for the release in
releases.jsonof themainbranch, 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
Tagtorelease-$TAG,Release Titleto$RELEASE, andDescriptiontoFor 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.