Closed
Description
There's still a lot of manual work involved in each release. These are the steps I followed for the opentelemetry v0.3.0 release:
1. Create a new empty release branch
- Cut a new release branch from
master/HEAD
, specify the minor version, e.g.v0.3a.x
- This branch will be used for all minor releases, hence the
.x
- This branch will be used for all minor releases, hence the
- Push this branch to upstream
2. Create a PR for version number and changelog updates
- Cut another new branch from the release branch, specify micro version, e.g.
v0.3a0-release
- Update version numbers from "dev" to "X" (or "aX" in the case of alpha releases)
- Update changelogs to include release date, new release name
- Check for changes from last release that should have been included in changelogs, but weren't
- Open a PR targeting the release branch (see Update versions and changelogs for 0.3a release #328)
- Once this PR is merged, we'll create the GH release from the release branch
3. Make the same changes on master
- Cut a new branch from master, e.g.
v0.3a0-master-update
- Update the version number, make it a "dev" version greater than release version number, e.g.
0.4.dev0
- Cherry-pick changelog changes step 2
- Open a PR targeting master (see Pick up changelogs from #328, update dev version #331)
4. Create a new GH release from the release branch
- Create the GH release from the release branch, using a new tag for this micro version, e.g.
v0.3.0
- Copy the changelogs from all packages that changed into the release notes (and reformat to remove hard line wraps)
5. Check that packages were uploaded to PyPI
This should be handled automatically on release by the publish action from #247.
- Check the action logs to make sure packages have been uploaded to PyPI
- Check the release history (e.g. https://pypi.org/project/opentelemetry-api/#history) on PyPI
If for some reason the action failed, do it manually:
- To avoid pushing untracked changes, check out the repo in a new dir
- Switch to the release branch (important so we don't publish packages with "dev" versions)
- Build distributions with
./scripts/build.sh
- Delete distributions we don't want to push (e.g.
testutil
) - Push to PyPI as
twine upload --skip-existing --verbose dist/*
- Double check PyPI!