From c36138cfe47c51e8e8710a45ecbe9bcf422b13f3 Mon Sep 17 00:00:00 2001 From: Christopher Rogers Date: Fri, 19 Mar 2021 22:13:54 -0700 Subject: [PATCH] Adds prepare-release script --- .github/workflows/release-notes.yaml | 53 ------------------------ .github_changelog_generator | 7 ++++ scripts/prepare-release | 62 ++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 53 deletions(-) delete mode 100644 .github/workflows/release-notes.yaml create mode 100644 .github_changelog_generator create mode 100755 scripts/prepare-release diff --git a/.github/workflows/release-notes.yaml b/.github/workflows/release-notes.yaml deleted file mode 100644 index 307962dbb..000000000 --- a/.github/workflows/release-notes.yaml +++ /dev/null @@ -1,53 +0,0 @@ -# TODO: Add published to CDN date to description when the release is marked prerelease: false -name: Create GitHub Release -on: - repository_dispatch: - types: - - release_notes - push: - tags: - - 'v*' -jobs: - Release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - - name: Build - run: make build - - - name: Prepare - id: prep - run: | - version=$(echo '${{ github.ref }}' | sed 's/^.*v//') - changes=$(sed -n "/^### Version $version/,/^###/p" CHANGELOG.md | sed '$d' | sed '1d') - links=$(cat CHANGELOG.md | grep '^\[') - echo "::set-output name=name::$version" - echo "::set-output name=md5-checksum::$(set -- $(md5sum ./build/recurly.min.js); echo $1)" - echo "::set-output name=sri-hash::$(openssl dgst -sha384 -binary ./build/recurly.min.js | openssl base64 -A)" - echo "::set-output name=changes::${changes//$'\n'/%0A}" - echo "::set-output name=links::${links//$'\n'/%0A}" - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: ${{ steps.prep.outputs.name }} - body: | - ${{ steps.prep.outputs.changes }} - - ##### Minified MD5 Checksum - ``` - ${{ steps.prep.outputs.md5-checksum }} - ``` - ##### [SRI Hash](https://www.srihash.org/) - ``` - ${{ steps.prep.outputs.sri-hash }} - ``` - - ${{ steps.prep.outputs.links }} - draft: false - prerelease: true diff --git a/.github_changelog_generator b/.github_changelog_generator new file mode 100644 index 000000000..9fda2825a --- /dev/null +++ b/.github_changelog_generator @@ -0,0 +1,7 @@ +user=recurly +project=recurly-js +unreleased=true +exclude-labels=question,bug?,internal,dependency,documentation,tests & build +issues-wo-labels=false +verbose=false +since-tag=v2.6.0 diff --git a/scripts/prepare-release b/scripts/prepare-release new file mode 100755 index 000000000..33b6e8665 --- /dev/null +++ b/scripts/prepare-release @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Usage +# +# ./prepare-release major|minor|patch [--notes-out ] [--tag-out ] +# + +set -e + +if [ -n "$(git status --porcelain)" ]; then + echo "Working directory is not clean. Aborting." + exit 1 +fi + +if [ -z "$GITHUB_TOKEN" ]; then + echo "GITHUB_TOKEN must be set. Aborting." + exit 1 +fi + +LIB_ARTIFACT=./build/recurly.min.js +VERSION_FILE=./lib/recurly/version.js + +# Bump version +old_version=$(cat package.json | jq -r '.version') +npm --no-git-tag-version version ${1} +new_version=$(cat package.json | jq -r '.version') +echo "$(sed "s/$old_version/$new_version/" $VERSION_FILE)" > $VERSION_FILE + +# Generate Changelog +github_changelog_generator -t $GITHUB_TOKEN --future-release "v$new_version" + +# Compute hashes +make build +md5_checksum=$(md5sum $LIB_ARTIFACT) +sri_hash=$(openssl dgst -sha384 -binary $LIB_ARTIFACT | openssl base64 -A) + +while [[ "$#" -gt 0 ]]; do + case $1 in + # Create release notes artifact + -n|--notes-out) + echo "$new_version + + $(cat CHANGELOG.md | sed -n "/^## \[v$new_version\]/,/^##/p" | sed '$d;1d') + + ##### Minified MD5 Checksum + \`\`\` + ${md5_checksum} + \`\`\` + ##### [SRI Hash](https://www.srihash.org/) + \`\`\` + ${sri_hash} + \`\`\`" | awk '{$1=$1};1' > $2 + shift + ;; + + # Create release notes artifact + -t|--tag-out) + echo "v$new_version" > $2 + ;; + esac + shift +done