| # Copyright 2022 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 | |
| name: Post benchmark comment | |
| on: | |
| workflow_run: | |
| workflows: ["CI"] | |
| types: [completed] | |
| env: | |
| PR_CI_STAGE: ${{ github.event.workflow_run.event == 'pull_request' && 'presubmit' || 'postsubmit' }} | |
| PR_CI_RUN_ID: ${{ github.event.workflow_run.id }} | |
| PR_CI_RUN_ATTEMPT: ${{ github.event.workflow_run.run_attempt }} | |
| jobs: | |
| post_comment: | |
| # Only run the workflow if it's triggered from a pull request. | |
| if: github.event.workflow_run.event == 'pull_request' | |
| runs-on: ubuntu-20.04 | |
| permissions: | |
| issues: write | |
| pull-requests: write | |
| steps: | |
| - name: "Checking out repository" | |
| uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 | |
| - name: "Checking benchmark processing job" | |
| id: check | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| BENCHMARK_PROCESS_JOB: process_benchmark_results | |
| run: | | |
| # Assume the workflow has fewer than 100 jobs. | |
| export CONCLUSION=$(gh api \ | |
| "/repos/${GITHUB_REPOSITORY}/actions/runs/${PR_CI_RUN_ID}/attempts/${PR_CI_RUN_ATTEMPT}/jobs?per_page=100" \ | |
| | jq --raw-output --arg job "${BENCHMARK_PROCESS_JOB}" \ | |
| '.jobs | map(select(.name==$job))[0] | .conclusion') | |
| echo "job-conclusion=${CONCLUSION}" >> "${GITHUB_OUTPUT}" | |
| - name: "Downloading artifacts" | |
| if: steps.check.outputs.job-conclusion == 'success' | |
| id: download | |
| env: | |
| # Currently GitHub managed runner doesn't have GCP credential. Fetch | |
| # from public URL directly. | |
| PR_CI_GCS_URL: https://storage.googleapis.com/iree-github-actions-${{ env.PR_CI_STAGE }}-artifacts/${{ env.PR_CI_RUN_ID }}/${{ env.PR_CI_RUN_ATTEMPT }} | |
| BENCHMARK_COMMENT_ARTIFACT: benchmark-comment.json | |
| run: | | |
| wget -O "${BENCHMARK_COMMENT_ARTIFACT}" \ | |
| "${PR_CI_GCS_URL}/${BENCHMARK_COMMENT_ARTIFACT}" | |
| echo "benchmark-comment-artifact=${BENCHMARK_COMMENT_ARTIFACT}" >> "${GITHUB_OUTPUT}" | |
| - name: Posting comments | |
| if: steps.check.outputs.job-conclusion == 'success' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GIST_BOT_TOKEN: ${{ secrets.GIST_BOT_TOKEN }} | |
| COMMENT_BOT_USER: github-actions[bot] | |
| # Get PR number from the event instead of the untrusted comment | |
| # artifact, to make sure we won't incorrectly update other PRs. | |
| BENCHMARK_COMMENT_ARTIFACT: ${{ steps.download.outputs.benchmark-comment-artifact }} | |
| run: | | |
| ./build_tools/benchmarks/post_benchmark_comment.py \ | |
| --verbose \ | |
| --github_event_json="${GITHUB_EVENT_PATH}" \ | |
| "${BENCHMARK_COMMENT_ARTIFACT}" |