diff --git a/RELEASING.md b/RELEASING.md index 124d741b5..b22455b35 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,3 +1,6 @@ +There is a script `release.sh` which does the following, but if you need to do +a release manually, here are the steps: + - `git checkout -b release-v0.x.x` - Update `CHANGELOG.md` - `npm version 0.x.x` diff --git a/release.sh b/release.sh new file mode 100644 index 000000000..577bf92be --- /dev/null +++ b/release.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# +# Script to perform a release of matrix-js-sdk. Performs the steps documented +# in RELEASING.md +# +# Requires githib-changelog-generator; to install, do +# pip install git+https://github.com/matrix-org/github-changelog-generator.git + +set -e + +if [ $# -ne 1 ]; then + echo 2>&1 "Usage: $0 vX.Y.Z" + exit 1 +fi + +tag=$1 + +case "$tag" in + v*) ;; + + *) + echo 2>&1 "Tag $tag must start with v" + exit 1 + ;; +esac + +# strip leading 'v' to get release +release="${tag#v}" +rel_branch="release-$tag" + +cd `dirname $0` + +echo "Creating release branch" +git checkout -b "$rel_branch" + +echo "Generating changelog" +update_changelog "$release" +read -p "Edit CHANGELOG.md manually, or press enter to continue" + +echo "Committing updated changelog" +git commit "CHANGELOG.md" -m "Prepare changelog for $tag" + +# Bump package.json, build the dist, and tag +echo "npm version" +npm version "$release" + +# generate the docs +echo "generating jsdocs" +npm run gendoc + +echo "copying jsdocs to gh-pages branch" +git checkout gh-pages +git pull +cp -ar ".jsdoc/matrix-js-sdk/$release" . +perl -i -pe 'BEGIN {$rel=shift} $_ =~ /^<\/ul>/ && print + "
  • Version ${rel}
  • \n"' \ + $release index.html +git add "$release" +git commit --no-verify -m "Add jsdoc for $release" index.html "$release" + +# merge release branch to master +echo "updating master branch" +git checkout master +git pull +git merge --ff-only "$rel_branch" + +# push everything to github +git push origin master "$rel_branch" "$tag" "gh-pages" + +# publish to npmjs +npm publish