-
Notifications
You must be signed in to change notification settings - Fork 226
Release process
Production releases are represented by tags on the main
branch. Every production release should be preceded by one or more automated nightly pre-releases. Because VS Code follows the Modern Lifecycle Policy, old releases of the extension do not need to be serviced, so there's no need to maintain a separate release branch. Follow these steps to create a new release candidate or production release.
Every night, if there have been changes on the main
branch, an Azure DevOps pipeline will automatically build the extension and publish it to the VS Code Marketplace as a pre-release. The pre-release version number is based on current release number but has a date-based patch version of the form YYMMDDRRR where RRR is a number that increments if there are multiple pre-releases in the same day.
- On the
main
branch, update the version inpackage.json
. For example,"version": "0.5.0"
. For better or worse, vscode-arduino is effectively following ZeroVer.- Major (first) version is always zero.
- Minor (second) version is incremented for each production release.
- Patch (third) version is always zero for production releases. Non-zero patch versions are reserved for pre-releases.
- Run
npm install
from the root of the repository. - Update the release date and notes in
CHANGELOG.md
. - Commit the changes directly to
main
and push.
git add package.json package-lock.json CHANGELOG.md
git commit -m "Bump to v0.5.0"
git push
- Tag the release with a tag that matches the new version and push the tag.
git tag v0.5.0
git push origin v0.5.0
- Verify that an Azure DevOps CI build associated with the tag has started.
- Once the build finishes, verify that the release appears on GitHub.
- Download the release VSIX and upload it to the VS Code Marketplace extension portal.
- Once the Marketplace finishes validation steps, verify that you can install the new version of vscode-arduino from the Marketplace within VS Code.
- Verify that all issues labeled
fixed-pending-release
are closed. There are some issues with this automation that we haven't fully flushed out yet.