| # Copyright 2024 The IREE Authors |
| # |
| # Licensed under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| |
| # Checks the result status of each job provided by 'jobs-json' and sends an |
| # alert if at least one job failed. |
| # |
| # Usage: |
| # ```yml |
| # jobs: |
| # job_1: |
| # ... |
| # job_2: |
| # ... |
| # my_summary: |
| # if: always() |
| # needs: |
| # - job_1 |
| # - job_2 |
| # uses: ./.github/workflows/workflow_summary.yml |
| # secrets: inherit |
| # with: |
| # jobs-json: ${{ toJson(needs) }} |
| # ``` |
| |
| name: Workflow Summary |
| |
| on: |
| workflow_call: |
| inputs: |
| jobs-json: |
| type: string |
| description: The output of `toJson(needs)` |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| summary: |
| runs-on: ubuntu-24.04 |
| steps: |
| - name: Getting failed jobs |
| id: failed_jobs |
| run: | |
| echo '${{ inputs.jobs-json }}' |
| FAILED_JOBS="$(echo '${{ inputs.jobs-json }}' \ |
| | jq --raw-output \ |
| 'map_values(select(.result!="success" and .result!="skipped")) | keys | join(",")' \ |
| )" |
| echo "failed-jobs=${FAILED_JOBS}" >> $GITHUB_OUTPUT |
| if [[ "${FAILED_JOBS}" != "" ]]; then |
| echo "The following jobs failed: ${FAILED_JOBS}" |
| exit 1 |
| fi |
| - name: Post to Discord on Failure |
| uses: sarisia/actions-status-discord@8aa2e3c0e53de9c2d03c1ad676f570f2073bca60 # v1.15.2 |
| if: failure() && github.ref_name == 'main' && github.repository_owner == 'iree-org' |
| with: |
| webhook: ${{ secrets.DISCORD_WEBHOOK }} |
| description: "The following jobs failed: ${{ steps.failed_jobs.outputs.failed-jobs }}" |
| url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}" |