Skip to content

Latest commit

 

History

History
137 lines (95 loc) · 4.72 KB

MAINTAINERS.rst

File metadata and controls

137 lines (95 loc) · 4.72 KB

Notes for maintainers.

Pre-release test plan

  1. If no release branch exists, fork the version numbers in the release branch (vX.Y-branch) and the master branch. See "Cutting a release branch", below, for details.

    The rest of these steps should be done in the release branch:

    git checkout vX.Y-branch
    
  2. Make tox happy on the following first-party platforms:

    • Windows 10
    • the latest macOS
    • the latest Ubuntu LTS
  3. Make tox happy on other popular Linux distributions as resources allow. Doing this in a container is fine.

    • Arch
    • the latest Ubuntu release (if different than the latest LTS)
    • Debian stable (if its Python 3 is still supported)
    • Debian testing
    • Fedora
  4. Build alpha N (N=1 to start, then N=2 if you need more commits, etc.) and upload to pypi. See "Building and uploading the release wheels" below for a procedure.

  5. Install the alpha on test platforms.

    pip3 install west==X.YaN
    
  6. Create and update a default (Zephyr) workspace on all of the platforms from 1., using the installed alpha:

    west init zephyrproject
    cd zephyrproject
    west update
    
  7. Do the following Zephyr specific testing in the Zephyr workspace on all of the platforms from 1. Skip QEMU tests on non-Linux platforms, and make sure ZEPHYR_BASE is unset in the calling environment.

    west build -b qemu_x86 -s zephyr/samples/hello_world -d build-qemu-x86
    west build -d build-qemu-x86 -t run
    
    west build -b qemu_cortex_m3 -s zephyr/samples/hello_world -d build-qemu-m3
    west build -d build-qemu-m3 -t run
    
    # This example uses a Nordic board. Do this for as many boards
    # as you have access to / volunteers for.
    west build -b nrf52dk_nrf52832 -s zephyr/samples/hello_world -d build-nrf52
    west flash -d build-nrf52
    west debug -d build-nrf52
    west debugserver -d build-nrf52
    west attach -d build-nrf52
    

    (It's still a pass if west build requires --pristine.)

  8. Assuming that all went well (if it didn't, go fix it and repeat), update __version__ to 'X.Y.Z' (i.e. drop the 'aN' suffix that denotes alpha N), tag the release (see "Tagging the release" for a procedure) and upload to PyPI (see "Building and uploading the release wheels" for a procedure).

  9. Send email to the Zephyr lists, announce@ and users@, notifying them of the new release. Include 'git shortlog' data of the new commits since the last release to give credit to all contributors.

Building and uploading the release wheels

You need the zephyr-project PyPI credentials for the 'twine upload' command.

git clean -ffdx
python3 setup.py sdist bdist_wheel
twine upload -u zephyr-project dist/*

The 'git clean' step is important. We've anecdotally observed broken wheels being generated from dirty repositories.

Tagging the release

Create and push a GPG signed tag.

git tag -a -s vX.Y.Z -m 'West vX.Y.Z

Signed-off-by: Your Name <[email protected]>'

git push origin vX.Y.Z

Cutting a release branch

To cut a new release branch, just get confirmation from the other maintainers that it's time and push it manually to GitHub.

The release branch for minor version vX.Y.0 should be named "vX.Y-branch".

Subsequent fixes for patch versions vX.Y.Z should go to vX.Y-branch after being backported from master (or the other way around in case of an urgent hotfix).

In vX.Y-branch, in src/west/version.py, set __version__ to X.Y.0a1. Don't include this commit in the master branch.

Summary of the outcome:

  • precondition: vX.Y-branch does not exist, master is at version X.(Y-1).99
  • postcondition: v.X.Y-branch exists and is at version vX.Y.0a1, master is at version vX.Y.99

Check if west.manifest.SCHEMA_VERSION also needs an update. The rule is that SCHEMA_VERSION should be updated to X.Y if this release is introducing manifest schema changes that earlier versions of west cannot parse.

Don't change SCHEMA_VERSION from its current value if the manifest syntax is fully compatible with what west X.(Y-1) can handle.

Don't introduce incompatible manifest changes in patch versions. That violates semantic versioning. If v0.7.3 can parse it, v0.7.2 should be able to parse it, too.

Send this as a pull request to the newly created release branch. (This requires a PR and review because getting the release number wrong would upload potentially buggy software to anyone who runs 'pip install west'.)

In master (but not the release branch), set __version__ to X.Y.99. Send this commit as a PR to master. Make sure any SCHEMA_VERSION updates are reflected in master too.

From this point forward, the master branch is moving independently from the release branch.