on: push: branches: - main name: Notify on Push permissions: contents: read jobs: notifyOnForcePush: name: Notify on Force Push on `main` if: github.repository == 'nodejs/node' && github.event.forced runs-on: ubuntu-latest steps: - name: Slack Notification uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 # 2.3.0 env: SLACK_COLOR: '#DE512A' SLACK_ICON: https://github.com/nodejs.png?size=48 SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }} SLACK_MESSAGE: | A commit was force-pushed to by Before: After: SLACK_USERNAME: nodejs-bot SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} notifyOnMissingMetadata: name: Notify on Push on `main` that lacks metadata if: github.repository == 'nodejs/node' runs-on: ubuntu-latest permissions: pull-requests: write steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - name: Check commit message run: npx -q core-validate-commit ${{ github.event.after }} || echo "INVALID_COMMIT_MESSAGE=1" >> $GITHUB_ENV - name: Retrieve PR number if possible if: env.INVALID_COMMIT_MESSAGE run: | COMMIT_TITLE=$(git --no-pager log --oneline -1 --no-color) node <<'EOF' >> $GITHUB_ENV || true const invalidCommitMessageMatch = /\s\(\#(\d+)\)$/.exec(process.env.COMMIT_TITLE); if (invalidCommitMessageMatch == null) process.exit(1) console.log(`PR_ID=${invalidCommitMessageMatch[1]}`) EOF - name: Comment on the Pull Request if: ${{ env.PR_ID }} run: | gh pr comment ${{ env.PR_ID }} --repo "${{ github.repository }}" \ --body "A commit referencing this Pull Request was pushed to `${{ github.ref_name }}` by @${{ github.actor }} with an invalid commit message." env: GH_TOKEN: ${{ github.token }} - name: Slack Notification if: ${{ env.INVALID_COMMIT_MESSAGE }} uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 # 2.3.0 env: SLACK_COLOR: '#DE512A' SLACK_ICON: https://github.com/nodejs.png?size=48 SLACK_TITLE: Invalid commit was pushed to ${{ github.ref }} SLACK_MESSAGE: | A commit with an invalid message was pushed to by . Before: After: SLACK_USERNAME: nodejs-bot SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}