-
Notifications
You must be signed in to change notification settings - Fork 92
Preparing for a release
Before publishing a minor release, we must first follow these steps:
- Create a branch based off of
main
to prepare the release. This branch should contain any final adjustments to the changelog, as well as last-minute necessary changes. - Remove the
-SNAPSHOT
suffix from the version number inlerna.json
to prepare the automation for the release. Push this branch up to GitHub. -
For v3 only: Upload l10n terms to POEditor to give contributors an opportunity to translate new terms before the release is published.
- In GitHub, download the file poeditor.json file from the release branch.
- In the POEditor project, select the "Import" tab and upload the JSON file.
- Create a PR for this branch to merge into
main
. Once reviewed and approved, the branch can be merged intomain
to kick off the release process. Once the workflows finish, the release will be published. -
As soon as the PR has been merged, create a branch based off of
main
with the following format:release/X.Y
-
X
represents the major version number -
Y
represents the minor version number
-
For patch releases, create a temporary branch based off of the release/X.Y
branch (from the last minor release) instead - this temporary branch should not be named after a protected rule. The changes will be merged into that release branch. Depending on the changes made for each patch, you may have to introduce a separate, small PR into main
that incorporates those patch notes into the latest versions of the changelogs.
If a bug is spotted during code freeze, we should try to introduce the bug fix into the main
branch, and then cherry-pick that fix into the release/X.Y
branch.
If there is a reason we need to push a fix directly into the release branch, we can merge that branch back into main
so that we keep those bug fixes in the codebase. However, we should avoid this approach and prefer merging bug fixes into main
whenever possible.
Note: If you ever need to manually update the version number across all files in your branch, follow the steps in Manual versioning.
To keep release branches from piling up, we can choose keep a number of "previous release branches" to keep in the repository. The "last 2 minor versions" of a major release should be sufficient for our case. This could be considered a reference point for where a feature was working properly (or before a bug was introduced).
Once v3 becomes the active major version, we can create a v2-lts
branch that would serve as a checkpoint for any v2 maintenance releases. We would follow this same release process for the v2-lts
branch.
The release is automatically published when a pull request is merged that meets the following conditions:
- The PR's base branch is a release branch defined in
.github/release.config.js
. Currently our release branches arenext
,v1-lts
, and all branches prefixed withrelease/
. - The version number in
lerna.json
is not a snapshot version. If the version ends with "-SNAPSHOT", it will not be published.
The deployment workflow will perform the following steps:
- Push a commit that updates the version number across all
CHANGELOG.md
andpackage.json
files (see example here). - Build the npm packages (TGZ for
zowe-explorer-api
) and VS Code extensions (VSIX forzowe-explorer
andzowe-explorer-ftp-extension
). - Publish the npm packages to the npm registry.
- Publish the VS Code extensions to the VS Code Marketplace and OVSX Registry.
- Create a draft GitHub release with these files uploaded as assets, and post a comment on the PR if the release succeeded (see example here).
- Push another commit that updates the version number, this time to the next snapshot version (see example here).
After the release is published, one more step remains. Review the draft GitHub release, make any desired updates to the release notes, and publish it.
Note: If you ever need to manually update the version number across all files in your branch, follow the steps below. Typically this is not necessary because the deployment workflow can now update the version number automatically.
- Create a new branch following the steps in Before release.
- Replace the "TBD Release" header in each package's changelog with the version number (e.g.,
## `2.1.0`
). - Edit the
package.json
file for each package and change the following:
-
In the following example, we are ready to publish release 1.19.0, so the version number should be changed to "1.19.0" (without
-SNAPSHOT
).-
the extension's version number:
"name": "@zowe/zowe-explorer-api", "version": "1.19.0", <--- "description": "Extensibility API for Zowe Explorer.",
-
devDependencies version number:
"@types/yargs": "^11.0.0", "eslint-plugin-zowe-explorer": "1.19.0", <---- "@typescript-eslint/eslint-plugin": "^2.31.0",
-
dependencies version number:
"dependencies": { "@zowe/zowe-explorer-api": "1.19.0", <--- "fs-extra": "8.0.1",
-
- Once the changes are done, open a PR to the release branch to update the version.
- Create a branch with the release branch as the base. For example, if release 1.18.1 was just published, the base branch would be
v1.18.x
. - Edit all the package.json and change the following to the next patch pre-release version with
-SNAPSHOT
:
-
In the following example, release 1.18.1 was just published, so the next potential patch version number is 1.18.2. The version number should be changed to "1.18.2-SNAPSHOT".
-
the extension's version number:
"name": "@zowe/zowe-explorer-api", "version": "1.18.2-SNAPSHOT", <--- "description": "Extensibility API for Zowe Explorer.",
-
devDependencies version number:
"@types/yargs": "^11.0.0", "eslint-plugin-zowe-explorer": "1.18.2-SNAPSHOT", <---- "@typescript-eslint/eslint-plugin": "^2.31.0",
-
dependencies version number:
"dependencies": { "@zowe/zowe-explorer-api": "1.18.2-SNAPSHOT", <--- "fs-extra": "8.0.1",
-
- Once the changes are done, open a PR to the base release branch (for example,
v1.18.x
) to update the pre-release version.
-
pre-release
format for publishing follows as version (ie: 2.0.0) followed by-next.<year><month><day><militaryTime>
for example2.0.0-next.202204041200
- If you ever need to manually generate the vsix and tgz files, run the command
yarn && yarn run package
. They will be generated indist
folder. - Open VSX and VSC Marketplace Tokens will expire on July 15th, 2025. Please make sure that these are renewed before doing a release. Contact Fernando Rijo Cedeno or Mark Ackert for more info about renewing tokens.
zowe/vscode-extension-for-zowe
Welcome
Using Zowe Explorer
Roadmaps
Development Process
Testing process
Release Process
Backlog Grooming Process
How to Extend Zowe Explorer
- Extending Zowe Explorer
- Error Handling for Extenders
- Secure Credentials for Extenders
- Sample Extender Repositories
Conformance Criteria
Early Access