-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Release Process
- No warnings emitted when built
- Consistent formatting - Enforced by CI
- No valgrind errors - Enforced by CI
- 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
- 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.
See here
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
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
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))
https://github.com/vowpalwabbit/docker-images#release-steps
- 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.
Update version in ext_libs and ensure that CI is passing
- Home
- First Steps
- Input
- Command line arguments
- Model saving and loading
- Controlling VW's output
- Audit
- Algorithm details
- Awesome Vowpal Wabbit
- Learning algorithm
- Learning to Search subsystem
- Loss functions
- What is a learner?
- Docker image
- Model merging
- Evaluation of exploration algorithms
- Reductions
- Contextual Bandit algorithms
- Contextual Bandit Exploration with SquareCB
- Contextual Bandit Zeroth Order Optimization
- Conditional Contextual Bandit
- Slates
- CATS, CATS-pdf for Continuous Actions
- Automl
- Epsilon Decay
- Warm starting contextual bandits
- Efficient Second Order Online Learning
- Latent Dirichlet Allocation
- VW Reductions Workflows
- Interaction Grounded Learning
- CB with Large Action Spaces
- CB with Graph Feedback
- FreeGrad
- Marginal
- Active Learning
- Eigen Memory Trees (EMT)
- Element-wise interaction
- Bindings
-
Examples
- Logged Contextual Bandit example
- One Against All (oaa) multi class example
- Weighted All Pairs (wap) multi class example
- Cost Sensitive One Against All (csoaa) multi class example
- Multiclass classification
- Error Correcting Tournament (ect) multi class example
- Malicious URL example
- Daemon example
- Matrix factorization example
- Rcv1 example
- Truncated gradient descent example
- Scripts
- Implement your own joint prediction model
- Predicting probabilities
- murmur2 vs murmur3
- Weight vector
- Matching Label and Prediction Types Between Reductions
- Zhen's Presentation Slides on enhancements to vw
- EZExample Archive
- Design Documents
- Contribute: