Skip to content

Release v5.0.29

Release v5.0.29 #47

Workflow file for this run

name: Create Release on Version Tag
on:
push:
tags:
- 'v*.*.*'
workflow_dispatch:
inputs:
version:
description: 'Version; should look like v1.2.3(-[alpha|beta|rc].N])'
required: true
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
jobs:
create-release:
runs-on: ubuntu-latest
outputs:
harper-version: ${{ steps.package-version.outputs.packageVersion }}
draft-release-url: ${{ steps.create-release.outputs.url }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
node-version: latest
package-manager-cache: false
- name: Get package.json version
id: package-version
run: echo "packageVersion=$(npm pkg get version | tr -d '\"')" >> "$GITHUB_OUTPUT"
- name: Get tag version
id: tag-version
run: |
if [[ "${{ github.event.inputs.version }}" != "" ]]; then
echo "tagVersion=${{ github.event.inputs.version }}"
else
echo "tagVersion=${{ github.ref_name }}"
fi >> "$GITHUB_OUTPUT"
- name: Confirm tag version matches package.json version
run: |
echo "Tag version: ${{ steps.tag-version.outputs.tagVersion }}"
echo "Package.json version: v${{ steps.package-version.outputs.packageVersion }}"
test "${{ steps.tag-version.outputs.tagVersion }}" == "v${{ steps.package-version.outputs.packageVersion }}"
- name: Notify release in progress in Slack
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
with:
method: chat.postMessage
token: ${{ secrets.SLACK_BOT_TOKEN }}
payload: |
{
"channel": "#development-ci",
"text": "Harper ${{ steps.tag-version.outputs.tagVersion }} release in progress",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Harper ${{ steps.tag-version.outputs.tagVersion }} release"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "*Status*"
},
{
"type": "mrkdwn",
"text": ":hourglass_flowing_sand: In progress"
},
{
"type": "mrkdwn",
"text": "<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Workflow run ${{ github.run_id }}>"
}
]
}
]
}
- name: Package Harper
run: npm run package
- name: Generate release notes from git log
run: |
PREV_TAG=$(git describe --tags --abbrev=0 "HEAD^" 2>/dev/null || echo "")
{
echo "## What's Changed"
echo ""
if [ -n "$PREV_TAG" ]; then
git log --format="- %s" "${PREV_TAG}..HEAD" | { grep -v "^- Release v" || true; }
else
git log --format="- %s" | { grep -v "^- Release v" || true; } | head -50
fi
echo ""
if [ -n "$PREV_TAG" ]; then
echo "**Full Changelog**: ${{ github.server_url }}/${{ github.repository }}/compare/${PREV_TAG}...${{ steps.tag-version.outputs.tagVersion }}"
fi
} > release-notes.md
- name: Get version components
id: version-components
uses: matt-usurp/validate-semver@7bbc9584679de1aeef57aa531504ab00438481ab # v2.1.0
with:
version: ${{ steps.tag-version.outputs.tagVersion }}
- name: Create Release
id: create-release
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1
with:
name: ${{ steps.tag-version.outputs.tagVersion }}
tag_name: ${{ steps.tag-version.outputs.tagVersion }}
files: harper-*.tgz
fail_on_unmatched_files: true
body_path: release-notes.md
prerelease: ${{ steps.version-components.outputs.prerelease != '' }}
draft: true
make_latest: ${{ github.event.inputs.draft == 'false' && steps.version-components.outputs.prerelease == '' }}
send-slack-message-on-success:
if: success() && !cancelled()
needs: [create-release]
runs-on: ubuntu-latest
steps:
- uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
with:
method: chat.postMessage
token: ${{ secrets.SLACK_BOT_TOKEN }}
payload: |
{
"channel": "#development-ci",
"text": "Harper v${{ needs.create-release.outputs.harper-version }} draft release created",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Harper v${{ needs.create-release.outputs.harper-version }} release"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "*Status*"
},
{
"type": "mrkdwn",
"text": ":github: Draft release waiting for review"
},
{
"type": "mrkdwn",
"text": "<${{ needs.create-release.outputs.draft-release-url }}|Review draft release>"
}
]
}
]
}
send-slack-message-on-failure:
if: failure() && !cancelled()
needs: [create-release]
runs-on: ubuntu-latest
steps:
- uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
with:
method: chat.postMessage
token: ${{ secrets.SLACK_BOT_TOKEN }}
payload: |
{
"channel": "#development-ci",
"text": "Harper v${{ needs.create-release.outputs.harper-version }} release failed",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Harper v${{ needs.create-release.outputs.harper-version }} release"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "*Status*"
},
{
"type": "mrkdwn",
"text": ":x: Failed"
},
{
"type": "mrkdwn",
"text": "<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Workflow run ${{ github.run_id }}>"
}
]
}
]
}