Release Process - VowpalWabbit/vowpal_wabbit GitHub Wiki
Requirements
- No warnings emitted when built
- Consistent formatting - Enforced by CI
- No valgrind errors - Enforced by CI
Update version.txt
- Update
version.txt
with new version number. - Update files in
test/
with the new version number. Check for any other places in the repo that may reference the version number. - Commit and push the version number update and PR to
master
branch
Tag the release on Github
- Use GitHub UI to draft a new release
- In the
Choose a tag
menu, type in the new version number and create a new tag.- Doing it this way ensures there is a single linear history of releases
- Click the
Generate release notes
button to generate a list of commits between the previous release and the new tag. - Prepend the changelog with a brief overview of the most important changes. You'll have to manually look over the changes and write a summary of them. Refer to previous releases for an example of what to do.
Python
See here
Homebrew
Homebrew has a bot that automatically updates VW so it is worth checking in their closed PR's if that has happened already.
Install Homebrew. You can do this on both Mac and Linux/WSL.
Run:
brew bump-formula-pr vowpal-wabbit --version=<version i.e. 9.0.1>
See sample PR https://github.com/Homebrew/homebrew-core/pull/81257
Java
To perform a release, follow the steps below:
- Make sure the sub-version is set correctly and does not include -SNAPSHOT (e.g. .0) in the pom.xml.in
- Ensure that you have the necessary permissions to run the build pipeline and log in to Sonatype. You'll need both to complete the remaining steps.
- Manually run the Azure build pipeline.
- Visit Sonatype and "close & release" the staged jar.
- Published artifacts can be found here: https://central.sonatype.com/search?smo=true&q=vw-jni
C#
Currently it's a manual process to upload artifacts generated by the dotnet_nugets.yml GH Action
1. Trigger a build on the "Windows Official" pipeline against the release tag
2. Trigger a release on the Windows-Official-NuGet-Public release pipeline (it should automatically pick up the latest generated artifact from the build pipeline in (1))
Docker image
https://github.com/vowpalwabbit/docker-images#release-steps
Vcpkg port
- Create a fork of vcpkg
- Go to
ports/vowpal-wabbit
. - Edit
vcpkg.json
with the new version number, and resetport-version
to zero if there is currently a nonzero value. - Edit
portfile.cmake
with the new Git commit hash. Download the repo archive athttps://codeload.github.com/VowpalWabbit/vowpal_wabbit/tar.gz/full_git_hash_goes_here
(put the hash into the url). Runsha512sum
on the downloaded file and put the sha512 hash intoportfile.cmake
. - Comment out non-library subdirectories in the latest version of vowpalwabbit/CMakeLists.txt (as of now that includes
active_interactor
,spanning_tree_bin
, andcli
). Get the output ofgit diff vowpalwabbit/CMakeLists.txt
and output it toports/vowpal-wabbit/cmake_remove_bin_targets.patch
. - Commit the changes to Git.
- Run
vcpkg x-add-version --all --overwrite-version
. This will make some changes to other files in the vcpkg repo. Commit those changes to Git. - Make a PR on Github to merge your fork into the main vcpkg repository.
- If you have to modify any file in
ports/vowpal-wabbit
, you must redo the "x-add-version" step again. That is, you must commit your changes, run the command, and make another commit with the resulting auto-generated changes.
VW WASM on npm
Pull new version of vw into reinforcement_learning repo
Update version in ext_libs and ensure that CI is passing