Release v5.0.29 #47
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }}>" | |
| } | |
| ] | |
| } | |
| ] | |
| } |