From a11a4bd3ce6b17f248bf50c1514331dc13d71a82 Mon Sep 17 00:00:00 2001 From: Marc Cataford Date: Fri, 19 Jul 2024 22:03:01 -0400 Subject: [PATCH] ci: improve status push to discord --- .../actions/push-status-to-discord/action.yml | 6 ++-- .../actions/push-status-to-discord/main.py | 31 +++++++++++++++++-- .../push-status-to-discord/requirements.txt | 1 + .forgejo/workflows/ci.yml | 1 + 4 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 .forgejo/actions/push-status-to-discord/requirements.txt diff --git a/.forgejo/actions/push-status-to-discord/action.yml b/.forgejo/actions/push-status-to-discord/action.yml index 05afb38..2aacc3f 100644 --- a/.forgejo/actions/push-status-to-discord/action.yml +++ b/.forgejo/actions/push-status-to-discord/action.yml @@ -14,7 +14,7 @@ outputs: description: "ID of the message that was posted, for editing purposes in further calls." value: "" -run: +runs: using: "composite" steps: - name: Setup Python @@ -22,5 +22,5 @@ run: with: python-version: 3.12 - name: Install dependencies - run: pip install . - - run: python ./main.py ${{ inputs.webhook_url }} ${{ inputs.project_name }} ${{inputs.status }} + run: pip install -r ./.forgejo/actions/push-status-to-discord/requirements.txt + - run: python ./.forgejo/actions/push-status-to-discord/main.py ${{ inputs.webhook-url }} ${{ inputs.project-name }} ${{ inputs.status }} diff --git a/.forgejo/actions/push-status-to-discord/main.py b/.forgejo/actions/push-status-to-discord/main.py index 115ff11..c1c94ad 100644 --- a/.forgejo/actions/push-status-to-discord/main.py +++ b/.forgejo/actions/push-status-to-discord/main.py @@ -1,8 +1,35 @@ import httpx +import typing import sys +COLORS = { + "failure": 0xCB2431, + "success": 0x28A745, +} + +class EmbedField(typing.TypedDict): + name: str + value: str + inline: bool + +class Embed(typing.TypedDict): + color: str + title: str + fields: list[EmbedField] + if __name__ == "__main__": webhook_url, project_name, status = sys.argv[1:] - response = httpx.post(webhook_url, json={"content": f"{project_name} - {status}"}) - print(response.json()) + embed_data = Embed( + color=COLORS["success"], + title=f"{project_name}: build #", + fields=[ + EmbedField( + name="Status", + value=status, + inline=True + ) + ] + ) + response = httpx.post(webhook_url, json={"embeds": [embed_data]}) + print(response.text) diff --git a/.forgejo/actions/push-status-to-discord/requirements.txt b/.forgejo/actions/push-status-to-discord/requirements.txt new file mode 100644 index 0000000..610f441 --- /dev/null +++ b/.forgejo/actions/push-status-to-discord/requirements.txt @@ -0,0 +1 @@ +httpx==0.27 diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index de5e23f..14f13d9 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -5,6 +5,7 @@ jobs: pre-run-notify: runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4 - uses: ./.forgejo/actions/push-status-to-discord with: webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}