From 49910ed6de05e75323dda37ac52b7bbc60bc3711 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Fri, 3 Jul 2026 07:08:01 +0000 Subject: [PATCH 1/2] ci: extract PR benchmark workflows Signed-off-by: Gregor Zeitlinger --- .github/workflows/pr-benchmark-report.yml | 81 +++++++++++++++++++++++ .github/workflows/pr-benchmarks.yml | 76 +++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 .github/workflows/pr-benchmark-report.yml create mode 100644 .github/workflows/pr-benchmarks.yml diff --git a/.github/workflows/pr-benchmark-report.yml b/.github/workflows/pr-benchmark-report.yml new file mode 100644 index 000000000..bcf5c01b1 --- /dev/null +++ b/.github/workflows/pr-benchmark-report.yml @@ -0,0 +1,81 @@ +--- +name: PR Benchmark Report + +on: + # zizmor: ignore[dangerous-triggers] -- this workflow never checks out or executes PR code; + # it only reads artifacts produced by the benchmark run and posts a PR comment. + workflow_run: + workflows: + - PR Benchmarks + types: + - completed + +permissions: {} + +jobs: + comment: + if: > + github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.conclusion != 'cancelled' + runs-on: ubuntu-24.04 + permissions: + actions: read + contents: read + pull-requests: write + steps: + - name: Comment on PR with benchmark results + env: + GH_TOKEN: ${{ github.token }} + REPO: ${{ github.repository }} + RUN_ID: ${{ github.event.workflow_run.id }} + RUN_URL: ${{ github.event.workflow_run.html_url }} + CONCLUSION: ${{ github.event.workflow_run.conclusion }} + run: | + PR_NUMBER=$(gh api "repos/${REPO}/actions/runs/${RUN_ID}" --jq '.pull_requests[0].number') + HEAD_SHA=$(gh api "repos/${REPO}/actions/runs/${RUN_ID}" --jq '.head_sha') + + COMMENT_ARTIFACT_ID=$(gh api "repos/${REPO}/actions/runs/${RUN_ID}/artifacts" \ + --jq '.artifacts[] | select(.name == "pr-benchmark-comment-pr-'"${PR_NUMBER}"'-'"${HEAD_SHA}"'") | .id' \ + | head -1) + + RESULTS_ARTIFACT_NAME="pr-benchmark-results-pr-${PR_NUMBER}-${HEAD_SHA}" + MARKER="" + + if [[ -n "${COMMENT_ARTIFACT_ID}" ]]; then + gh api \ + -H "Accept: application/octet-stream" \ + "repos/${REPO}/actions/artifacts/${COMMENT_ARTIFACT_ID}/zip" > /tmp/pr-benchmark-comment.zip + unzip -p /tmp/pr-benchmark-comment.zip pr-benchmark-comment.md > /tmp/pr-benchmark-comment.md + SUMMARY_BODY=$(cat /tmp/pr-benchmark-comment.md) + else + SUMMARY_BODY="_Benchmark summary artifact was not found; see the workflow run for details._" + fi + + if [[ "${CONCLUSION}" == "success" ]]; then + STATUS_LINE="Benchmark run succeeded for \`${HEAD_SHA}\`." + else + STATUS_LINE="Benchmark run finished with conclusion \`${CONCLUSION}\` for \`${HEAD_SHA}\`." + fi + + body=$(cat < Date: Fri, 3 Jul 2026 07:11:00 +0000 Subject: [PATCH 2/2] ci: track mise in PR benchmark workflow Signed-off-by: Gregor Zeitlinger --- .github/renovate-tracked-deps.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/renovate-tracked-deps.json b/.github/renovate-tracked-deps.json index ab49c82f4..4f3f8c203 100644 --- a/.github/renovate-tracked-deps.json +++ b/.github/renovate-tracked-deps.json @@ -73,6 +73,11 @@ "mise" ] }, + ".github/workflows/pr-benchmarks.yml": { + "regex": [ + "mise" + ] + }, ".github/workflows/regenerate-api-diff-otel.yml": { "regex": [ "mise"