Post benchmark comment #120
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: | |
# TODO(#17001): switch to just "Benchmark" after finishing refactor and | |
# pending PRs have been rebased | |
workflows: ["CI", "Benchmark"] | |
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@v4.1.7 | |
- 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}" |