diff --git a/.github/workflows/discord.yml b/.github/workflows/discord.yml new file mode 100644 index 000000000..720c6a74f --- /dev/null +++ b/.github/workflows/discord.yml @@ -0,0 +1,74 @@ +name: Discord Notifications + +on: + pull_request: + types: [opened, closed, reopened] + issues: + types: [opened, reopened] + release: + types: [published] + +permissions: + contents: read + +jobs: + notify: + runs-on: ubuntu-latest + steps: + - name: Build message + id: msg + env: + EVENT: ${{ github.event_name }} + ACTION: ${{ github.event.action }} + REPO: ${{ github.repository }} + PR_TITLE: ${{ github.event.pull_request.title }} + PR_URL: ${{ github.event.pull_request.html_url }} + PR_NUM: ${{ github.event.pull_request.number }} + PR_MERGED: ${{ github.event.pull_request.merged }} + ISSUE_TITLE: ${{ github.event.issue.title }} + ISSUE_URL: ${{ github.event.issue.html_url }} + ISSUE_NUM: ${{ github.event.issue.number }} + RELEASE_TITLE: ${{ github.event.release.name }} + RELEASE_URL: ${{ github.event.release.html_url }} + RELEASE_TAG: ${{ github.event.release.tag_name }} + run: | + URL="" + TITLE="" + CONTENT="" + + if [ "$EVENT" = "pull_request" ]; then + TITLE="$PR_TITLE" + URL="$PR_URL" + PRNUM="$PR_NUM" + MERGED="$PR_MERGED" + if [ "$ACTION" = "closed" ] && [ "$MERGED" = "true" ]; then + CONTENT="✅ **PR merged** #$PRNUM: $TITLE\n$URL" + else + CONTENT="🔁 **PR $ACTION** #$PRNUM: $TITLE\n$URL" + fi + elif [ "$EVENT" = "issues" ]; then + TITLE="$ISSUE_TITLE" + URL="$ISSUE_URL" + INUM="$ISSUE_NUM" + CONTENT="🐛 **Issue $ACTION** #$INUM: $TITLE\n$URL" + elif [ "$EVENT" = "release" ]; then + TITLE="$RELEASE_TITLE" + URL="$RELEASE_URL" + TAG="$RELEASE_TAG" + CONTENT="🚀 **Release published**: **$TAG** — $TITLE\n$URL" + else + CONTENT="â„šī¸ Event: $EVENT ($ACTION)" + fi + + echo "content<> $GITHUB_OUTPUT + echo "$CONTENT" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + - name: Send to Discord + env: + DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }} + CONTENT: ${{ steps.msg.outputs.content }} + run: | + curl -H "Content-Type: application/json" \ + -d "{\"content\": \"$CONTENT\"}" \ + "$DISCORD_WEBHOOK_URL"