Updraft prepares a repository for an upcoming release by updating changelogs and
bumping version numbers in package.json files.
It saves the changes to the files, but it does not make any Git commits or
GitHub releases. You can automate these things in your CI/CD pipeline (it works
well with the rainstormy/release
actions), or you can do them manually after running the Updraft tool.
Supported file formats:
- Markdown
CHANGELOG.mdand AsciiDocCHANGELOG.adocin Keep a Changelog format. package.jsonfiles.
Install
the @rainstormy/updraft
package with the package manager of your choice:
npm install --save-dev @rainstormy/updraftpnpm add --save-dev @rainstormy/updraftyarn add --dev @rainstormy/updraftupdraft [options]Examples (see the Options reference below):
updraft --files 'CHANGELOG.md' 'package.json' --release-version '1.1.0'updraft \
--files 'package.json' 'packages/**/package.json' \
--release-files 'CHANGELOG.md' \
--check-sequential-release \
--release-version '2.0.0-beta.1'Use the rainstormy/updraft action to run Updraft on the file system of the
GitHub Actions runner.
Examples (see the Options reference below):
jobs:
prepare-release:
runs-on: ubuntu-24.04
timeout-minutes: 1
permissions: { }
steps:
- name: Check out the repository
uses: actions/checkout@v4
#
- name: Update release artefacts
uses: rainstormy/updraft@v1
with:
files: package.json
release-files: CHANGELOG.md
release-version: 1.1.0jobs:
prepare-release:
runs-on: ubuntu-24.04
timeout-minutes: 1
permissions: { }
steps:
- name: Check out the repository
uses: actions/checkout@v4
#
- name: Update release artefacts
uses: rainstormy/updraft@v1
with:
check-sequential-release: true
files: |
package.json
packages/**/package.json
release-files: CHANGELOG.md
release-version: ${{ inputs.version || github.head_ref }}Verify that release-version specifies a valid increment
from the latest version detected in each file to be updated.
# CLI:
updraft --check-sequential-release# GitHub Actions:
with:
check-sequential-release: trueUpdate the files matching the specified glob patterns
whenever release-version is specified.
# CLI:
updraft --files <pattern-1> <pattern-2> <pattern-3>...# GitHub Actions:
with:
files: |
<pattern-1>
<pattern-2>
<pattern-3>
...Update the files matching the specified glob patterns only
when release-version has a -prerelease or +buildinfo
segment.
# CLI:
updraft --prerelease-files <pattern-1> <pattern-2> <pattern-3>...# GitHub Actions:
with:
prerelease-files: |
<pattern-1>
<pattern-2>
<pattern-3>
...Update the files matching the specified glob patterns only
when release-version does not have a -prerelease or
+buildinfo segment.
# CLI:
updraft --release-files <pattern-1> <pattern-2> <pattern-3>...# GitHub Actions:
with:
release-files: |
<pattern-1>
<pattern-2>
<pattern-3>
...The semantic version number (SemVer) of the next release
on the form <major.minor.patch[-prerelease][+buildinfo]>. The -prerelease
and +buildinfo segments are optional.
It accepts any input containing a substring that is a semantic version number,
e.g. v2.0.0 or release/1.5.0-rc.0.
# CLI:
updraft --release-version <major.minor.patch[-prerelease][+buildinfo]># GitHub Actions:
with:
release-version: <major.minor.patch[-prerelease][+buildinfo]>