diff --git a/.github/workflows/discord-merged-pr.yml b/.github/workflows/discord-merged-pr.yml new file mode 100644 index 000000000..5f927d893 --- /dev/null +++ b/.github/workflows/discord-merged-pr.yml @@ -0,0 +1,40 @@ +name: Announce merged PRs in Discord + +on: + pull_request_target: + types: [closed] + +permissions: {} + +jobs: + announce: + if: github.repository == 'bilawalsidhu/gods-eye-view' && github.event.pull_request.merged == true + runs-on: ubuntu-latest + timeout-minutes: 2 + steps: + # This uses the trusted base workflow and never checks out or runs PR code. + - name: Post to Discord contributions + shell: bash + env: + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_CONTRIBUTIONS_WEBHOOK_URL }} + run: | + if [[ ! "$DISCORD_WEBHOOK_URL" =~ ^https://discord\.com/api/webhooks/[0-9]+/[A-Za-z0-9_-]+$ ]]; then + echo '::error::Set DISCORD_CONTRIBUTIONS_WEBHOOK_URL to the Discord channel webhook URL.' + exit 1 + fi + + payload=$(jq -ce ' + .pull_request | { + allowed_mentions: {parse: []}, + embeds: [{ + title: ("Merged #" + (.number | tostring) + ": " + (.title | .[0:115])), + url: .html_url, + footer: {text: ("By " + .user.login + " ยท into " + (.base.ref | .[0:100]))} + }] + } + ' "$GITHUB_EVENT_PATH") + + curl --silent --show-error --fail --output /dev/null \ + --connect-timeout 10 --max-time 20 --retry 3 --retry-max-time 50 \ + --header 'Content-Type: application/json' --data-binary "$payload" \ + --url "$DISCORD_WEBHOOK_URL?wait=true"