From b3f8aab2ab8633e5141c05dcb32d0785db83ff4a Mon Sep 17 00:00:00 2001 From: Roberto Tyley Date: Wed, 3 Jan 2024 15:46:31 +0000 Subject: [PATCH] Comment on PR when a preview release is published Remove troublesome backticks that confuse bash... Ideally we would be generating a markdown message with lots of backticks for styling: https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks ...like this: https://github.com/rtyley/sample-project-using-gha-scala-library-release-workflow/pull/1#issuecomment-1872955682 ...but they get interpreted by BASH, and cause trouble... https://github.com/rtyley/sample-project-using-gha-scala-library-release-workflow/actions/runs/7399435634/job/20130944058 --- .github/workflows/reusable-release.yml | 60 +++++++++++++++++++++----- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/.github/workflows/reusable-release.yml b/.github/workflows/reusable-release.yml index b0f00ce..6fe47b8 100644 --- a/.github/workflows/reusable-release.yml +++ b/.github/workflows/reusable-release.yml @@ -75,7 +75,7 @@ jobs: version_suffix="" else release_type="PREVIEW_FEATURE_BRANCH" - version_suffix="-PREVIEW.${{ github.ref_name }}.$(date +%Y-%m-%dT%H%M).${GITHUB_SHA:0:8}" + version_suffix="-PREVIEW.${GITHUB_REF_NAME//[^[:alnum:-_]]/}.$(date +%Y-%m-%dT%H%M).${GITHUB_SHA:0:8}" fi echo "release_type: $release_type, version_suffix: $version_suffix" cat << EndOfFile >> $GITHUB_OUTPUT @@ -332,21 +332,61 @@ jobs: sbt "sonatypeBundleRelease" github-release: - name: 🔒 GitHub Release - if: needs.init.outputs.release_type == 'FULL_MAIN_BRANCH' - needs: [push-release-commit, sign] + name: 🔒 Update GitHub + needs: [init, push-release-commit, sign] runs-on: ubuntu-latest permissions: contents: write + pull-requests: write env: RELEASE_TAG: ${{ needs.push-release-commit.outputs.release_tag }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + GITHUB_REPO_URL: ${{ github.server_url }}/${{ github.repository }} steps: + - name: Common values + run: | + GITHUB_ACTIONS_PATH="$GITHUB_REPO_URL/actions" + GITHUB_WORKFLOW_FILE="release.yml" # Could be derived from $GITHUB_WORKFLOW_REF + GITHUB_WORKFLOW_URL="$GITHUB_ACTIONS_PATH/workflows/$GITHUB_WORKFLOW_FILE" + + cat << EndOfFile >> $GITHUB_ENV + GITHUB_WORKFLOW_FILE=$GITHUB_WORKFLOW_FILE + GITHUB_WORKFLOW_LINK=[GitHub UI]($GITHUB_WORKFLOW_URL) + GITHUB_WORKFLOW_RUN_LINK=[#${{ github.run_number }}]($GITHUB_ACTIONS_PATH/runs/${{ github.run_id }}) + EndOfFile - name: Create Github Release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GH_REPO: ${{ github.repository }} + if: needs.init.outputs.release_type == 'FULL_MAIN_BRANCH' run: | - gh release create $RELEASE_TAG --verify-tag --generate-notes --notes "Release run: [#${{ github.run_number }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})" - - name: Job summary + gh release create $RELEASE_TAG --verify-tag --generate-notes --notes "Release run: $GITHUB_WORKFLOW_RUN_LINK" + echo "GitHub Release notes: [$RELEASE_TAG]($GITHUB_REPO_URL/releases/tag/$RELEASE_TAG)" >> $GITHUB_STEP_SUMMARY + - name: Update PR + if: needs.init.outputs.release_type == 'PREVIEW_FEATURE_BRANCH' run: | - echo "GitHub Release notes: [$RELEASE_TAG](${{ github.server_url }}/${{ github.repository }}/releases/tag/$RELEASE_TAG)" >> $GITHUB_STEP_SUMMARY + cat << EndOfFile > comment_body.txt + @${{github.actor}} has published a preview version of this PR with release workflow run $GITHUB_WORKFLOW_RUN_LINK, based on commit ${{ github.sha }}: + + $RELEASE_TAG + +
+ Want to make another preview release? + + Click 'Run workflow' in the $GITHUB_WORKFLOW_LINK, specifying the $GITHUB_REF_NAME branch, or use the [GitHub CLI](https://cli.github.com/) command: + + gh workflow run $GITHUB_WORKFLOW_FILE --ref $GITHUB_REF_NAME + +
+ +
+ Want to make a full release after this PR is merged? + + Click 'Run workflow' in the $GITHUB_WORKFLOW_LINK, leaving the branch as the default, or use the [GitHub CLI](https://cli.github.com/) command: + + gh workflow run $GITHUB_WORKFLOW_FILE + +
+ EndOfFile + + cat comment_body.txt + + gh pr comment ${{ github.ref_name }} --body-file comment_body.txt >> $GITHUB_STEP_SUMMARY