diff options
| -rw-r--r-- | .github/workflows/build.yaml | 31 | ||||
| -rw-r--r-- | .github/workflows/lint.yaml | 32 | ||||
| -rw-r--r-- | .github/workflows/status_embed.yaml | 71 | 
3 files changed, 71 insertions, 63 deletions
| diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 64c272cf..b0c03139 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -75,34 +75,3 @@ jobs:                kubernetes/sir-lancebot/deployment.yaml            images: 'ghcr.io/python-discord/sir-lancebot:${{ steps.sha_tag.outputs.tag }}'            kubectl-version: 'latest' - -      # 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 -        # This is the last step in the lint-build sequence, so always send -        # an embed, regardless of success, failure or cancelled status. -        if: always() -        uses: SebastiaanZ/[email protected] -        with: -          # Our GitHub Actions webhook -          webhook_id: '784184528997842985' -          webhook_token: ${{ secrets.GHA_WEBHOOK_TOKEN }} - -          # Workflow information -          workflow_name: ${{ github.workflow }} -          run_id: ${{ github.run_id }} -          run_number: ${{ github.run_number }} -          status: ${{ job.status }} -          actor: ${{ github.actor }} -          repository:  ${{ github.repository }} -          ref: ${{ github.ref }} -          sha: ${{ github.sha }} - -          # Optional PR-information. These values will be "null" if -          # the event trigger was not PR-related. -          pr_author_login: ${{ github.event.pull_request.user.login }} -          pr_number: ${{ github.event.pull_request.number }} -          pr_title: ${{ github.event.pull_request.title }} -          pr_source: ${{ github.event.pull_request.head.label }} diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 8dd93773..063f406c 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -91,35 +91,3 @@ jobs:        - name: Run flake8          run: "flake8 \          --format='::error file=%(path)s,line=%(row)d,col=%(col)d::[flake8] %(code)s: %(text)s'" - -      # 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 -        # For a `pull_request` we always want to send a status embed -        # here. For a push event, only when this workflow is the last -        # in lint->build sequence because it failed or was cancelled. -        if: github.event_name == 'pull_request' || cancelled() || failure() -        uses: SebastiaanZ/[email protected] -        with: -          # Our GitHub Actions webhook -          webhook_id: '784184528997842985' -          webhook_token: ${{ secrets.GHA_WEBHOOK_TOKEN }} - -          # Workflow information -          workflow_name: ${{ github.workflow }} -          run_id: ${{ github.run_id }} -          run_number: ${{ github.run_number }} -          status: ${{ job.status }} -          actor: ${{ github.actor }} -          repository:  ${{ github.repository }} -          ref: ${{ github.ref }} -          sha: ${{ github.sha }} - -          # Optional PR-information. These values will be "null" if -          # the event trigger was not PR-related. -          pr_author_login: ${{ github.event.pull_request.user.login }} -          pr_number: ${{ github.event.pull_request.number }} -          pr_title: ${{ github.event.pull_request.title }} -          pr_source: ${{ github.event.pull_request.head.label }} diff --git a/.github/workflows/status_embed.yaml b/.github/workflows/status_embed.yaml new file mode 100644 index 00000000..1d175fb9 --- /dev/null +++ b/.github/workflows/status_embed.yaml @@ -0,0 +1,71 @@ +name: Status Embed + +on: +  workflow_run: +    workflows: +      - Lint +      - Build +    types: +      - completed + +jobs: +  status_embed: +    # We send the embed in the following situations: +    # - Always after the `Build` workflow, as it runs at the +    #   end of our workflow sequence regardless of status. +    # - Always for the `pull_request` event, as it only +    #   runs one workflow. +    # - Always run for non-success workflows, as they +    #   terminate the workflow sequence. +    if: >- +      github.event.workflow_run.name == 'Build' || +      github.event.workflow_run.event == 'pull_request' || +      github.event.workflow_run.conclusion != 'success' +    name:  Send Status Embed to Discord +    runs-on: ubuntu-latest + +    steps: +      # Unfortunately, not all the pull request information we +      # need is available in the workflow_run payload. We need +      # to fetch it from the API. +      - name: Get Pull Request Information +        if: github.event.workflow_run.event == 'pull_request' +        uses: octokit/[email protected] +        id: pull_request +        with: +          route: GET /repos/{owner}/{repo}/pulls +          owner: ${{ github.event.repository.owner.login }} +          repo: ${{ github.event.repository.name }} +          state: open +          head: ${{format( +              '{0}:{1}', +              github.event.workflow_run.head_repository.owner.login, +              github.event.workflow_run.head_branch +            )}} +          sort: updated +          direction: desc +        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/[email protected] +        with: +          # Our GitHub Actions webhook +          webhook_id: '784184528997842985' +          webhook_token: ${{ secrets.GHA_WEBHOOK_TOKEN }} + +          # Workflow information +          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 }} +          actor: ${{ github.actor }} +          repository:  ${{ github.repository }} +          ref: ${{ github.ref }} +          sha: ${{ github.event.workflow_run.head_sha }} + +          pull_request_payload: ${{ steps.pull_request.outputs.data }} | 
