From c4947afe7a515dd847590627354c2120fb882325 Mon Sep 17 00:00:00 2001 From: Drayton Munster Date: Tue, 4 Jun 2024 11:24:59 -0400 Subject: [PATCH] Benchmark: Properly retain benchmark results for comparison --- .github/workflows/benchmarks_comment.yml | 23 +++++++++++--------- .github/workflows/benchmarks_run.yml | 27 ++++++++++++++---------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/.github/workflows/benchmarks_comment.yml b/.github/workflows/benchmarks_comment.yml index 6f52d29..18f89f7 100644 --- a/.github/workflows/benchmarks_comment.yml +++ b/.github/workflows/benchmarks_comment.yml @@ -11,9 +11,6 @@ jobs: comment: if: github.event.workflow_run.conclusion == 'success' runs-on: ubuntu-latest - env: - BENCHMARK_RESULTS: benchmark_results - PR_EVENT: event.json steps: - name: Download Benchmark Results uses: actions/github-script@v7 @@ -40,19 +37,23 @@ jobs: let fs = require('fs'); fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/${artifactName}.zip`, Buffer.from(download.data)); } - await downloadArtifact(process.env.BENCHMARK_RESULTS); - await downloadArtifact(process.env.PR_EVENT); + await downloadArtifact("benchmark_results_target"); + await downloadArtifact("benchmark_results_pr"); + await downloadArtifact("event.json"); - name: Unzip Benchmark Results run: | - unzip $BENCHMARK_RESULTS.zip - unzip $PR_EVENT.zip + unzip benchmark_results_target.zip + unzip benchmark_results_pr.zip + unzip event.json.zip - name: Export PR Event Data - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | let fs = require('fs'); let prEvent = JSON.parse(fs.readFileSync(process.env.PR_EVENT, {encoding: 'utf8'})); core.exportVariable("PR_NUMBER", prEvent.number); + core.exportVariable("HEAD_SHA", prEvent.pull_request.head.sha); + core.exportVariable("BASE_SHA", prEvent.pull_request.base.sha); - name: Find Comment uses: peter-evans/find-comment@v3 @@ -68,15 +69,17 @@ jobs: const fs = require('fs'); const issue_number = ${{ env.PR_NUMBER }}; const comment_id = '${{ steps.fc.outputs.comment-id }}'; + const head_sha = ${{ env.HEAD_SHA }}; + const base_sha = ${{ env.BASE_SHA }}; let results_main = 'Benchmarks did not run successfully on main.'; let results_pr = 'Benchmarks did not run successfully on PR.'; if (fs.existsSync('results_main.txt')) { - results_main = fs.readFileSync('results_main.txt', 'utf8'); + results_main = fs.readFileSync('results_target.txt', 'utf8'); } if (fs.existsSync('results_pr.txt')) { results_pr = fs.readFileSync('results_pr.txt', 'utf8'); } - const body = `Benchmark Results - Solvers\n\n
Main\n\n\`\`\`\n${results_main}\n\`\`\`\n
\n
PR\n\n\`\`\`\n${results_pr}\n\`\`\`\n
`; + const body = `Benchmark Results - Solvers\n\n
Target Branch - ${base_sha}\n\n\`\`\`\n${results_main}\n\`\`\`\n
\n
PR - ${head_sha}\n\n\`\`\`\n${results_pr}\n\`\`\`\n
`; if (comment_id) { github.rest.issues.updateComment({ owner: context.repo.owner, diff --git a/.github/workflows/benchmarks_run.yml b/.github/workflows/benchmarks_run.yml index 2158fa6..bff5351 100644 --- a/.github/workflows/benchmarks_run.yml +++ b/.github/workflows/benchmarks_run.yml @@ -9,29 +9,34 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout main branch - uses: actions/checkout@v2 + - name: Checkout target branch + uses: actions/checkout@v4 with: - ref: main + ref: github.base_ref - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - - name: Run benchmarks on main - solvers - run: cargo bench -- solvers --exact | tail -n +6 > results_main.txt + - name: Run benchmarks on target - solvers + run: cargo bench -- solvers --exact | tail -n +6 > results_target.txt + + - name: Upload Benchmark Results + uses: actions/upload-artifact@v4 + with: + name: benchmark_results_target + path: ./results_target.txt + if-no-files-found: error - name: Checkout PR branch - uses: actions/checkout@v2 + uses: actions/checkout@v4 - - name: Run benchmarks on PR branch + - name: Run benchmarks on PR - solvers run: cargo bench -- solvers --exact | tail -n +6 > results_pr.txt - name: Upload Benchmark Results uses: actions/upload-artifact@v4 with: - name: benchmark_results - path: | - ./results_main.txt - ./results_pr.txt + name: benchmark_results_pr + path: ./results_pr.txt if-no-files-found: error - name: Upload GitHub Pull Request Event