diff --git a/.github/actions/asana-create-action-item/templates/internal-release-tag-failed.yml b/.github/actions/asana-create-action-item/templates/internal-release-tag-failed.yml index edb1cc2cef..ddc2e6471a 100644 --- a/.github/actions/asana-create-action-item/templates/internal-release-tag-failed.yml +++ b/.github/actions/asana-create-action-item/templates/internal-release-tag-failed.yml @@ -38,7 +38,8 @@ data: - Complete this task when ready and proceed with testing the build. + Complete this task when ready and proceed with testing the build. If you're bumping an internal release, you should get another task asking you to publish the release in Sparkle. + Look for other tasks in task and handle them as needed. 🔗 Workflow URL: ${WORKFLOW_URL}. diff --git a/.github/workflows/bump_internal_release.yml b/.github/workflows/bump_internal_release.yml index 371428d089..f0cc9db706 100644 --- a/.github/workflows/bump_internal_release.yml +++ b/.github/workflows/bump_internal_release.yml @@ -30,6 +30,32 @@ jobs: *) echo "👎 Not a release branch"; exit 1 ;; esac + - name: Check out the code + uses: actions/checkout@v4 + with: + ref: ${{ github.ref_name }} + + - name: Extract Asana Task ID + id: task-id + uses: ./.github/actions/asana-extract-task-id + with: + task-url: ${{ github.event.inputs.asana-task-url }} + + - name: Validate release notes + env: + TASK_ID: ${{ steps.task-id.outputs.task-id }} + ASANA_ACCESS_TOKEN: ${{ secrets.ASANA_ACCESS_TOKEN }} + run: | + curl -fLSs "https://app.asana.com/api/1.0/tasks/${TASK_ID}?opt_fields=notes" \ + -H "Authorization: Bearer ${ASANA_ACCESS_TOKEN}" \ + | jq -r .data.notes \ + | ./scripts/extract_release_notes.sh > release_notes.txt + release_notes="$(" ]]; then + echo "::error::Release notes are empty. Please add release notes to the Asana task and restart the workflow." + exit 1 + fi + run_tests: name: Run Tests diff --git a/.github/workflows/publish_dmg_release.yml b/.github/workflows/publish_dmg_release.yml index 3cd949b361..e300e71cd6 100644 --- a/.github/workflows/publish_dmg_release.yml +++ b/.github/workflows/publish_dmg_release.yml @@ -45,7 +45,7 @@ jobs: name: Tag public release - # Run if release-type is provided (not empty) an is not internal + # Run if release-type is provided (not empty) and is not internal if: contains(github.event.inputs.release-type, '') == false && github.event.inputs.release-type != 'internal' uses: ./.github/workflows/tag_release.yml @@ -111,6 +111,28 @@ jobs: - name: Select Xcode run: sudo xcode-select -s /Applications/Xcode_$(<.xcode-version).app/Contents/Developer + - name: Extract Asana Task ID + id: task-id + uses: ./.github/actions/asana-extract-task-id + with: + task-url: ${{ github.event.inputs.asana-task-url }} + + - name: Fetch and validate release notes + env: + TASK_ID: ${{ steps.task-id.outputs.task-id }} + ASANA_ACCESS_TOKEN: ${{ secrets.ASANA_ACCESS_TOKEN }} + run: | + curl -fLSs "https://app.asana.com/api/1.0/tasks/${TASK_ID}?opt_fields=notes" \ + -H "Authorization: Bearer ${ASANA_ACCESS_TOKEN}" \ + | jq -r .data.notes \ + | ./scripts/extract_release_notes.sh > release_notes.txt + release_notes="$(" ]]; then + echo "::error::Release notes are empty. Please add release notes to the Asana task and restart the workflow." + exit 1 + fi + echo "RELEASE_NOTES_FILE=release_notes.txt" >> $GITHUB_ENV + - name: Set up Sparkle tools env: SPARKLE_URL: https://github.com/sparkle-project/Sparkle/releases/download/${{ vars.SPARKLE_VERSION }}/Sparkle-${{ vars.SPARKLE_VERSION }}.tar.xz @@ -131,23 +153,6 @@ jobs: echo "dmg-name=$DMG_NAME" >> $GITHUB_OUTPUT echo "dmg-path=$DMG_NAME" >> $GITHUB_OUTPUT - - name: Extract Asana Task ID - id: task-id - uses: ./.github/actions/asana-extract-task-id - with: - task-url: ${{ github.event.inputs.asana-task-url }} - - - name: Fetch release notes - env: - TASK_ID: ${{ steps.task-id.outputs.task-id }} - ASANA_ACCESS_TOKEN: ${{ secrets.ASANA_ACCESS_TOKEN }} - run: | - curl -fLSs "https://app.asana.com/api/1.0/tasks/${TASK_ID}?opt_fields=notes" \ - -H "Authorization: Bearer ${ASANA_ACCESS_TOKEN}" \ - | jq -r .data.notes \ - | ./scripts/extract_release_notes.sh > release_notes.txt - echo "RELEASE_NOTES_FILE=release_notes.txt" >> $GITHUB_ENV - - name: Generate appcast id: appcast env: