opentelemetry-js/doc/contributing/releasing.md

2.7 KiB

Releasing

This document is aimed at Maintainers and describes how to release a new version of the packages contained in this repository. We aim to eventually automate this process as much as possible.

1. Create a release PR

  1. Go to the Release PR Workflow
  2. Click "Run workflow"
  3. For Release Type, select if you want to create a release PR for a new minor or patch version.
  4. For Release Scope, select if you want to release
    • experimental (all packages under ./experimental/packages)
    • sdk (all packages under ./packages/ and ./experimental/packages)
    • all (all packages under ./api/, ./packages/ and ./experimental/packages; excludes ./semantic-conventions/)
    • semconv (the single semconv package at ./semantic-conventions/)

[!TIP] If there was a commit to main, after PR creation simply run the workflow again before merging it. Re-running it will update the PR with the contents from main and will update the PR body too.

2. Review and merge the release PR

  1. Review the PR generated via the workflow (it will be titled chore: prepare next release and opened by the @opentelemetrybot user)
  2. Once approved, merge the PR

3. Publish to NPM

[!IMPORTANT] This step will publish anything that's on main IF AND ONLY IF the version has been bumped. If the version for a package has not been bumped, it will not publish a new version of the package.

  1. Go to the NPM publish workflow
  2. Click "Run workflow" (from main)
    1. In rare cases not all packages are published due to a race when publishing, if you suspect this to be the case, re-run the workflow: there should be enough time from 1.

4. Create GitHub Releases

  1. Check out the commit created by merging the release PR
  2. Run
    • npm run _github:draft_release:experimental, if you published an all, sdk or experimental release
    • npm run _github:draft_release:stable, if you published an all or sdk release
    • npm run _github:draft_release:semconv, if you published a semconv release
    • npm run _github:draft_release:api if you published an all release
  3. Verify that the contents of the created draft releases (title, changelog, selected commit)
  4. Publish the releases
    • uncheck Set as a pre-release for all releases
    • uncheck Set as the latest release for all releases except for the stable SDK release. This will ensure that the stable SDK release consistently shows up as latest under Releases when navigating to the project page.