From 07b0de89d9909eeb028136aad7b8f42e69f9a3fd Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Tue, 5 Mar 2024 11:26:19 +0100 Subject: [PATCH 1/3] Create RELEASE_PROCESS.md --- RELEASE_PROCESS.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 RELEASE_PROCESS.md diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md new file mode 100644 index 000000000..ecfa6da82 --- /dev/null +++ b/RELEASE_PROCESS.md @@ -0,0 +1,26 @@ +# Release process for GalaChain SDK + +This document outlines our release process for the GalaChain SDK Node.js package, ensuring a smooth workflow while adhering to Semantic Versioning (SemVer) principles. + +[Semantic Versioning](https://semver.org/) is a widely adopted versioning scheme for software development that consists of three numbers separated by dots: `MAJOR.MINOR.PATCH`. + +- **MAJOR**: Incremented when making incompatible API changes. +- **MINOR**: Incremented when adding functionality in a backward-compatible manner. +- **PATCH**: Incremented for backward-compatible bug fixes. + +We typically aim to release new versions on Mondays, although the timing may vary depending on the readiness of the release and any relevant factors affecting the project. + +## Before release + +Please check if there are any approved pull requests that can be easily merged and merge them. You may also want to consult merging if there are some PRs marked with a `breaking-change` tag. + +## Create a release on GitHub + +1. Go to the ["New release" page](https://github.com/GalaChain/sdk/releases/new) on GitHub. +2. Provide a new tag using the format `vX.Y.Z`. +3. Click on "Generate release notes." It will create a list of all PRs merged recently in the release description field. +4. Revisit the list of merged PRs and adjust the tag name appropriately (for instance, maybe instead of a patch release, it should be a minor release because there were some new features). +5. Provide a release name. It should start with the tag name (`vX.Y.Z`), because the version is not visible enough in the GitHub releases UI. After the tag, you may want to add an optional short highlight of the most notable changes. +6. Ensure "Set as a pre-release" is unchecked, and "Set as the latest release" is checked. +7. Click on the "Publish release" button. +8. The CI will handle publishing Node.js packages, publishing the CLI Docker image, and publishing the new version of docs. From b9b58c4ca82a14abf49a3e8845ad25a363d08fc0 Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Tue, 5 Mar 2024 18:55:51 +0100 Subject: [PATCH 2/3] Add information about automatic version bump --- RELEASE_PROCESS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index ecfa6da82..0d97c41b2 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -23,4 +23,4 @@ Please check if there are any approved pull requests that can be easily merged a 5. Provide a release name. It should start with the tag name (`vX.Y.Z`), because the version is not visible enough in the GitHub releases UI. After the tag, you may want to add an optional short highlight of the most notable changes. 6. Ensure "Set as a pre-release" is unchecked, and "Set as the latest release" is checked. 7. Click on the "Publish release" button. -8. The CI will handle publishing Node.js packages, publishing the CLI Docker image, and publishing the new version of docs. +8. The CI will handle setting the SDK version number from the tag name, publishing Node.js packages, publishing the CLI Docker image, and publishing the new version of docs. From 69c3184b4f9595863879f32d114280da9b9845b2 Mon Sep 17 00:00:00 2001 From: Jakub Dzikowski Date: Wed, 6 Mar 2024 20:43:17 +0100 Subject: [PATCH 3/3] Update RELEASE_PROCESS.md --- RELEASE_PROCESS.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 0d97c41b2..96772f676 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -14,13 +14,18 @@ We typically aim to release new versions on Mondays, although the timing may var Please check if there are any approved pull requests that can be easily merged and merge them. You may also want to consult merging if there are some PRs marked with a `breaking-change` tag. +By default we upgrade the PATCH version number, but if a given PR contains changes that should increment MINOR or MAJOR version number, then the upgrade should be made within the PR. +We have a NPM script for that: `npm run set-version X.Y.Z`. + +It means, that in most cases you don't need to increment version just before the release, because it is either unneccessary, or already done. + ## Create a release on GitHub -1. Go to the ["New release" page](https://github.com/GalaChain/sdk/releases/new) on GitHub. -2. Provide a new tag using the format `vX.Y.Z`. -3. Click on "Generate release notes." It will create a list of all PRs merged recently in the release description field. -4. Revisit the list of merged PRs and adjust the tag name appropriately (for instance, maybe instead of a patch release, it should be a minor release because there were some new features). +1. Check the new release version in [`package.json`](https://github.com/GalaChain/sdk/blob/main/package.json) file in the main branch. It contains the version number of the release. +2. Go to the ["New release" page](https://github.com/GalaChain/sdk/releases/new) on GitHub. +3. Provide a new tag using the format `vX.Y.Z` (`v` plus version from `package.json`). This format is required to trigger CI release jobs. +4. Click on "Generate release notes." It will create a list of all PRs merged recently in the release description field. 5. Provide a release name. It should start with the tag name (`vX.Y.Z`), because the version is not visible enough in the GitHub releases UI. After the tag, you may want to add an optional short highlight of the most notable changes. -6. Ensure "Set as a pre-release" is unchecked, and "Set as the latest release" is checked. -7. Click on the "Publish release" button. -8. The CI will handle setting the SDK version number from the tag name, publishing Node.js packages, publishing the CLI Docker image, and publishing the new version of docs. +7. Ensure "Set as a pre-release" is unchecked, and "Set as the latest release" is checked. +8. Click on the "Publish release" button. +9. The CI will handle publishing Node.js packages, publishing the CLI Docker image, and publishing the new version of docs. It will also increment PATCH version of the SDK on the main branch.