Skip to content

HOWTO:BuildARelease

Etienne Petrel edited this page Dec 7, 2023 · 77 revisions

Building a WiredTiger release package is straightforward.

You need:

  • a clone of wiredtiger and wiredtiger.github.com GitHub trees, using git
  • up-to-date installs of the build toolchain (CMake, doxygen, and python3)

Then:

  1. Ensure that you are working on the develop branch of the wiredtiger local tree.

  2. Ensure that all relevant API changes are mentioned in the upgrading documentation src/docs/upgrading.dox

  3. Bump the version by editing RELEASE_INFO (if needed), and run cd dist && sh s_all -f.

  4. Update the documentation landing page in src/docs/top/main.dox (to be automated), generate and copy it into place:

    cd dist && sh s_docs -l
    cp -r ../docs/top/* /path/to/wiredtiger.github.com
    
  5. Update the compatibility tests test/suite/test_compat<xy>.py by following the guide if applicable.

  6. Commit any changes and raise a PR (WT-10077 as an example).

  7. Generate the draft release package:

    cd dist && sh s_release
    

    This will cut a release as of the latest commit in your current tree. Uncommitted changes will not be included in the release. The release package will be written to ../releases/wiredtiger-X.Y.Z.tar.bz2.

  8. Sanity-check the draft release package by unpacking, then running mkdir build && cd build && cmake ../. -G Ninja && ninja and Python test suite. (Note: some dist/s_* scripts only run normally under a git tree, to get the test passing the alternative is to have a fresh git checkout and run the tests)

  9. Merge the PR, generate the official release package (using the commit just merged), and sanity-check the release package by following the same procedure in the above 2 steps.

  10. Tag the tree git tag X.Y.Z <commit-to-tag>. Push the new tag to remote git push --tags.

  11. Create the release on Github. Go to https://github.com/wiredtiger/wiredtiger/tags, select the "create release" dropdown button on the new release tag, and add the release notes by referring to the previous release. The source code tarballs will be automatically created & attached to the release page after creation.

  12. Update the wiredtiger.github.com tree with the new release package and documentation.

    cd wiredtiger/dist
    sh s_release_docs
    cd /path/to/wiredtiger.github.com
    # sanity check the version contents in index.html before push
    git push origin
    

Take care with this step - it can get confusing when updating the landing page version strings, especially when bumping major releases. Please make sure to check the changes in wiredtiger.github.com before pushing.

  1. Mark the released version as "released" on JIRA via the manage versions page. Create a new version number for the next release.
  2. Bump version number (major/minor/patch) in RELEASE_INFO file on develop branch, run dist/s_all, update compatibility tests as in the above step 5 if needed, and any other source files that contain the previous version number, commit the changes, and raise a PR. Please go through the normal PR review process to get it merged (WT-10135 as an example).
  3. Upload the corresponding Python release, the instructions are in HOWTO:UploadAReleaseForPythonInstalls.
  4. Announce the release on the Google Group's wiredtiger-users list.
  5. (Optional) Announce the release on the WiredTiger Facebook page page.
  6. File a SERVER ticket to update the MongoDB-WiredTiger-Log version numbers chart (SERVER-79265 as an example).