Skip to content

Release process

Bill Ticehurst edited this page Jan 24, 2024 · 1 revision

Some high-level notes for the team when doing a release.

  1. Ensure all issues and PRs targeting the release are checked in.
  2. Figure out the build number for the next release.
    1. For the first of a new major or minor release, update major_minor in ./version.py and start patch version from 0 again.
    2. For a patch release, choose the next sequential patch number for the <major>.<minor> in use.
    3. If unsure, check https://pypi.org/project/qsharp/#history or https://www.npmjs.com/package/qsharp-lang?activeTab=versions to see what the prior version was.
  3. Determine if this will be a dev, rc, or stable release.
  4. Navigate internally to the "microsoft.qsharp-lang.release" pipeline in ADO and click "Run pipeline"
  5. Ensure the "branch/tag" is set as appropriate (usually main).
  6. Click on the "Variables" field and ensure BUILD_NUMBER is the patch version chosen above, and BUILD_TYPE is dev, rc, or stable
  7. Click "Run" to start the pipeline. It usually takes about 12 - 15 mins to build all artifacts for all platforms.
  8. After building the artifacts, it will pause for approval. Under a heading titled "Related" you should see something like "8 published" as shown below

image

  1. Click on this and ensure the artifacts look right (versions, pre-release tags, file sizes, etc.) as a final check.
  2. If so, click on "Review" and approve proceeding to the publish stage.
  3. The 3 "publish" jobs may take up to 5 mins, and the VS Code Marketplace validation may take another few mins before the new version is "live".
  4. Validate that versions are showing up as expected on PyPI, npm, and VS Code marketplace.
  5. If this was a stable release, then tag the commit that was built and create a GitHub release from it:
    1. You create and publish a tag using commands such as git tag -a v1.0 deadbeef and git push origin v1.0 respectively.
    2. Create a new release from that tag at https://github.com/microsoft/qsharp/releases/new following the format of prior releases.