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.md
and AsciiDocCHANGELOG.adoc
in Keep a Changelog format. package.json
files.
Install
the @rainstormy/updraft
package with the package manager of your choice:
npm install --save-dev @rainstormy/updraft
pnpm add --save-dev @rainstormy/updraft
yarn add --dev @rainstormy/updraft
updraft [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 artifacts
uses: rainstormy/updraft@v1
with:
files: package.json
release-files: CHANGELOG.md
release-version: 1.1.0
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 artifacts
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: true
Update 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]>