Skip to content

Latest commit

 

History

History
154 lines (110 loc) · 4.09 KB

RELEASE.md

File metadata and controls

154 lines (110 loc) · 4.09 KB

Release Guidelines

If you need to release a new version of Shescape, follow the guidelines found in this document.

Automated Releases (Preferred)

To release a new version follow these steps:

  1. Manually trigger the release workflow from the main branch; Use an update type in accordance with Semantic Versioning. This will create a Pull Request that start the release process.
  2. Follow the instructions in the description of the created Pull Request.

Manual Releases (Discouraged)

If it's not possible to use automated releases, or if something goes wrong with the automatic release process, you can follow these steps to release a new version (using v2.7.2 as an example):

  1. Make sure that your local copy of the repository is up-to-date, sync:

    git checkout main
    git pull origin main
    npm clean-install

    Or clone:

    git clone git@github.com:ericcornelissen/shescape.git
    cd shescape
    npm clean-install
  2. Update the version number in the package manifest and lockfile:

    npm version --no-git-tag-version v2.7.2

    If that fails, change the value of the version field in package.json to the new version:

    -  "version": "2.7.1",
    +  "version": "2.7.2",

    and update the version number in package-lock.json using npm install (after updating package.json), which will sync the version number.

  3. Update the version number in src/modules/index.js:

    node script/release/bump-jsdoc.js

    If that fails, change the value of the @version tag in the documentation at the top of the file:

      * @module shescape
    - * @version 2.7.1
    + * @version 2.7.2
      * @license MPL-2.0
  4. Update the changelog:

    node script/release/bump-changelog.js

    If that fails, manually add the following text after the ## [Unreleased] line:

    - _No changes yet_
    
    ## [2.7.2] - YYYY-MM-DD

    The date should follow the year-month-day format where single-digit months and days should be prefixed with a 0 (e.g. 2022-01-01).

  5. Commit the changes to a new release branch and push using:

    git checkout -b release-$(sha1sum package-lock.json | awk '{print $1}')
    git add CHANGELOG.md src/modules/index.js package.json package-lock.json
    git commit -m "Version bump"
    git push origin release-$(sha1sum package-lock.json | awk '{print $1}')
  6. Create a Pull Request to merge the release branch into main.

  7. Merge the Pull Request if the changes look OK and all continuous integration checks are passing.

    NOTE: At this point, the continuous delivery automation may pick up and complete the release process. If not, or only partially, continue following the remaining steps.

  8. Immediately after the Pull Request is merged, sync the main branch:

    git checkout main
    git pull origin main
  9. Create a git tag for the new version:

    git tag v2.7.2
  10. Update the major version branch to point to the same commit as the new tag:

    git checkout v2
    git merge main
  11. Push the branch and tag:

    git push origin v2 v2.7.2
  12. Publish to npm:

    npm clean-install
    npm run transpile
    npm publish
  13. Create a GitHub Release. The release title should be "Release v2.7.2" and the release text should be the list of changes for the version from the changelog (including links).