Releasing a new Bats version
- page md_tests_scripts_bats_docs_releasing
These notes reflect the current process. There’s a lot more we could do, in terms of automation and expanding the number of platforms to which we formally release (see #103).
Update docs/CHANGELOG.md
Create a new entry at the top of
docs/CHANGELOG.md
that enumerates the significant updates to the new version.Bumping the version number
Bump the version numbers in the following files:
contrib/rpm/bats.spec
libexec/bats-core/bats
package.json
Commit these changes (including the
docs/CHANGELOG.md
changes) in a commit with the messageBats <VERSION>
, where<VERSION>
is the new version number.Create a new signed, annotated tag with:
$ git tag -a -s <VERSION>
Include the
docs/CHANGELOG.md
notes corresponding to the new version as the tag annotation, except the first line should be:Bats <VERSION> - YYYY-MM-DD
and any Markdown headings should become plain text, e.g.:### Added
should become:
Added:
Create a GitHub release
Push the new version commit and tag to GitHub via the following:
$ git push --follow-tags
Then visit https://github.com/bats-core/bats-core/releases, and:
Click Draft a new release.
Select the new version tag.
Name the release:
Bats <VERSION>
.Paste the same notes from the version tag annotation as the description, except change the first line to read:
Released: YYYY-MM-DD
.Click Publish release.
For more on
git push --follow-tags
, see:NPM
npm publish
. Pretty easy!For the paranoid, use
npm pack
and install the resulting tarball locally withnpm install
before publishing.Homebrew
The basic instructions are in the Submit a new version of an existing formula section of the Homebrew docs.
An example using v1.1.0 (notice that this uses the sha256 sum of the tarball):
This resulted in https://github.com/Homebrew/homebrew-core/pull/29864, which was automatically merged once the build passed.$ curl -LOv https://github.com/bats-core/bats-core/archive/v1.1.0.tar.gz $ openssl sha256 v1.1.0.tar.gz SHA256(v1.1.0.tar.gz)=855d8b8bed466bc505e61123d12885500ef6fcdb317ace1b668087364717ea82 # Add the --dry-run flag to see the individual steps without executing. $ brew bump-formula-pr \ --url=https://github.com/bats-core/bats-core/archive/v1.1.0.tar.gz \ --sha256=855d8b8bed466bc505e61123d12885500ef6fcdb317ace1b668087364717ea82
Alpine Linux
An example using v1.1.0 (notice that this uses the sha512 sum of the Zip file):
$ curl -LOv https://github.com/bats-core/bats-core/archive/v1.1.0.zip $ openssl sha512 v1.1.0.zip SHA512(v1.1.0.zip)=accd83cfec0025a2be40982b3f9a314c2bbf72f5c85daffa9e9419611904a8d34e376919a5d53e378382e0f3794d2bd781046d810225e2a77812474e427bed9e
After cloning alpinelinux/aports, I used the above information to create: https://github.com/alpinelinux/aports/pull/4696
Note: Currently users must enable the
edge
branch of thecommunity
repo by adding/uncommenting the corresponding entry in/etc/apk/repositories
.Announce
It’s worth making a brief announcement like the v1.1.0 announcement via Gitter:
v1.1.0 is now available via Homebrew and npm: https://github.com/bats-core/bats-core/releases/tag/v1.1.0 It'll eventually be available in Alpine via the edge branch of the community repo once alpinelinux/aports#4696 gets merged. (Check /etc/apk/repositories to ensure this repo is enabled.)