Closed
Description
Meta issue for release improvements
Automation
- Improve the changelog generation script to create changelogs in the correct format.
- Work out a single place to set the extension version number (across client and server).
- Improve VSIX publication - currently the build produces a VSIX, but
vsce
only wants to publish from
a code base, meaning the VSIX needs to be decompressed to publish it (maybe I missed something here, I honestly can't understand why this is the case) - Introduce testing on the VSIX artefact:
- Have a list of files that must be signed and verify the signatures on those files
- Crack open the VSIX and run the test suite on it
- Ensure the VSIX can be installed
- The ultimate ideal is to have a "prepare release" script that takes a version number as argument, and goes through and sets the version numbers and updates the changelog.
Another possibility here is to have the changelog updated with every PR, as a merge requirement. Then to release we just add a header...
Process
We should consider a document that describes the step-by-step process we follow for builds, not just in terms of "how to build", but also what our strategy is for release/version management and what our "contract" (too strong a word) is for things like feature-freezing a release.
The ideal release process is:
- Every commit to master is built as a potential release
- Actual releases are just branched off a selected commit with version numbers set at build time
(i.e. normal commit builds are e.g. 1.8.1-preview, but when selected for release drop the preview)
There may still be a little bit of work to do on this, so an intermediate process might be:
- Select a commit as "feature-complete" for the coming release and branch it from
master
- Move it to VSTS (and merge any needed additions there as PRs/cherry-picks)
- Build and prepare the release publication
- On release date, release the assets built
- Update GitHub with any VSTS commits, then release on GitHub