65 lines
2.8 KiB
YAML
65 lines
2.8 KiB
YAML
---
|
|
name: Status Embed
|
|
|
|
on:
|
|
workflow_run:
|
|
workflows:
|
|
- CI
|
|
types:
|
|
- completed
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
status_embed:
|
|
name: Send Status Embed to Discord
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
# A workflow_run event does not contain all the information
|
|
# we need for a PR embed. That's why we upload an artifact
|
|
# with that information in the CI workflow.
|
|
- name: Get Pull Request Information
|
|
id: pr_info
|
|
if: github.event.workflow_run.event == 'pull_request'
|
|
run: |
|
|
curl -s -H "Authorization: token $GITHUB_TOKEN" ${{ github.event.workflow_run.artifacts_url }} > artifacts.json
|
|
DOWNLOAD_URL=$(cat artifacts.json | jq -r '.artifacts[] | select(.name == "pull-request-payload") | .archive_download_url')
|
|
[ -z "$DOWNLOAD_URL" ] && exit 1
|
|
curl -sSL -H "Authorization: token $GITHUB_TOKEN" -o pull_request_payload.zip $DOWNLOAD_URL || exit 2
|
|
unzip -p pull_request_payload.zip > pull_request_payload.json
|
|
[ -s pull_request_payload.json ] || exit 3
|
|
echo "pr_author_login=$(jq -r '.user.login // empty' pull_request_payload.json)" >> $GITHUB_OUTPUT
|
|
echo "pr_number=$(jq -r '.number // empty' pull_request_payload.json)" >> $GITHUB_OUTPUT
|
|
echo "pr_title=$(jq -r '.title // empty' pull_request_payload.json)" >> $GITHUB_OUTPUT
|
|
echo "pr_source=$(jq -r '.head.label // empty' pull_request_payload.json)" >> $GITHUB_OUTPUT
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# Send an informational status embed to Discord instead of the
|
|
# standard embeds that Discord sends. This embed will contain
|
|
# more information and we can fine tune when we actually want
|
|
# to send an embed.
|
|
- name: GitHub Actions Status Embed for Discord
|
|
uses: SebastiaanZ/github-status-embed-for-discord@v0.3.0
|
|
with:
|
|
# Our GitHub Actions webhook
|
|
webhook_id: "1051784242318815242"
|
|
webhook_token: ${{ secrets.webhook_token }}
|
|
|
|
# We need to provide the information of the workflow that
|
|
# triggered this workflow instead of this workflow.
|
|
workflow_name: ${{ github.event.workflow_run.name }}
|
|
run_id: ${{ github.event.workflow_run.id }}
|
|
run_number: ${{ github.event.workflow_run.run_number }}
|
|
status: ${{ github.event.workflow_run.conclusion }}
|
|
sha: ${{ github.event.workflow_run.head_sha }}
|
|
|
|
# Now we can use the information extracted in the previous step:
|
|
pr_author_login: ${{ steps.pr_info.outputs.pr_author_login }}
|
|
pr_number: ${{ steps.pr_info.outputs.pr_number }}
|
|
pr_title: ${{ steps.pr_info.outputs.pr_title }}
|
|
pr_source: ${{ steps.pr_info.outputs.pr_source }}
|