Skip to content

Post benchmark comment #9092

Post benchmark comment

Post benchmark comment #9092

# 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}"