Skip to content
olgavrou edited this page Jul 17, 2023 · 29 revisions

Requirements

  1. No warnings emitted when built
  2. Consistent formatting - Enforced by CI
  3. No valgrind errors - Enforced by CI

Update version.txt

  1. Update version.txt with new version number.
  2. Update files in test/ with the new version number. Check for any other places in the repo that may reference the version number.
  3. Commit and push the version number update and PR to master branch

Tag the release on Github

  1. Use GitHub UI to draft a new release
  2. 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
  3. Click the Generate release notes button to generate a list of commits between the previous release and the new tag.
  4. 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:

  1. Make sure the sub-version is set correctly and does not include -SNAPSHOT (e.g. .0) in the pom.xml.in
  2. 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.
  3. Manually run the Azure build pipeline.
  4. Visit Sonatype and "close & release" the staged jar.
  5. 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

  1. Create a fork of vcpkg
  2. Go to ports/vowpal-wabbit.
  3. Edit vcpkg.json with the new version number, and reset port-version to zero if there is currently a nonzero value.
  4. Edit portfile.cmake with the new Git commit hash. Download the repo archive at https://codeload.github.com/VowpalWabbit/vowpal_wabbit/tar.gz/full_git_hash_goes_here (put the hash into the url). Run sha512sum on the downloaded file and put the sha512 hash into portfile.cmake.
  5. Comment out non-library subdirectories in the latest version of vowpalwabbit/CMakeLists.txt (as of now that includes active_interactor, spanning_tree_bin, and cli). Get the output of git diff vowpalwabbit/CMakeLists.txt and output it to ports/vowpal-wabbit/cmake_remove_bin_targets.patch.
  6. Commit the changes to Git.
  7. 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.
  8. Make a PR on Github to merge your fork into the main vcpkg repository.
  9. 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

follow instructions here

Pull new version of vw into reinforcement_learning repo

Update version in ext_libs and ensure that CI is passing

Clone this wiki locally