From 6e7772b1bc789b0d99d0dcd8911c76548c3494bd Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Mon, 3 Nov 2025 08:48:05 -0700 Subject: [PATCH] Try to make it work --- .github/workflows/compare_perf.yml | 18 ++++++++++---- .../xtask/src/tasks/workflows/compare_perf.rs | 24 ++++++++++++++----- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/.github/workflows/compare_perf.yml b/.github/workflows/compare_perf.yml index 8c6a46cd47aafb8d84e7a7cc6bb0fe969a5a7723..f7a917d452d6d3be7a8d9ad41c614b41cbb1a12a 100644 --- a/.github/workflows/compare_perf.yml +++ b/.github/workflows/compare_perf.yml @@ -14,7 +14,7 @@ on: type: string jobs: run_perf: - runs-on: namespace-profile-2x4-ubuntu-2404 + runs-on: namespace-profile-16x32-ubuntu-2204 steps: - name: steps::checkout_repo uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 @@ -23,11 +23,21 @@ jobs: - name: compare_perf::run_perf::echo_inputs run: echo ${{ inputs.base }} ${{ inputs.head }} shell: bash -euxo pipefail {0} - - name: compare_perf::run_perf::create_results - run: mkdir -p target; echo 'Perf is *much* better now' > target/results.md + - name: git checkout ${{ inputs.base }} + run: git checkout {ref_name} + - name: compare_perf::run_perf::cargo_perf_test + run: cargo perf-test -p gpui -- --json=${{ inputs.base }} + shell: bash -euxo pipefail {0} + - name: git checkout ${{ inputs.head }} + run: git checkout {ref_name} + - name: compare_perf::run_perf::cargo_perf_test + run: cargo perf-test -p gpui -- --json=${{ inputs.head }} + shell: bash -euxo pipefail {0} + - name: compare_perf::run_perf::compare_runs + run: cargo perf-compare ${{ inputs.base }} ${{ inputs.head }} --save=results.md shell: bash -euxo pipefail {0} - name: '@actions/upload-artifact results.md' uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: name: results.md - path: target/results.md + path: results.md diff --git a/tooling/xtask/src/tasks/workflows/compare_perf.rs b/tooling/xtask/src/tasks/workflows/compare_perf.rs index 95f42e7cb3391b151e52e09072f53e03e62a1d31..b5968f88dbd9bcc6ca3055bc6302842a8a405a05 100644 --- a/tooling/xtask/src/tasks/workflows/compare_perf.rs +++ b/tooling/xtask/src/tasks/workflows/compare_perf.rs @@ -6,7 +6,6 @@ use crate::tasks::workflows::{ vars::Input, }; -/// Generates the danger.yml workflow pub fn compare_perf() -> Workflow { let head = Input::string("head", None); let base = Input::string("base", None); @@ -25,16 +24,29 @@ pub fn run_perf(base: &Input, head: &Input) -> NamedJob { named::bash(&format!("echo {} {}", base.var(), head.var())) } - fn create_results() -> Step { - named::bash("mkdir -p target; echo 'Perf is *much* better now' > target/results.md") + fn cargo_perf_test(ref_name: String) -> Step { + named::bash(&format!("cargo perf-test -p gpui -- --json={ref_name}")) + } + + fn git_checkout(ref_name: String) -> Step { + Step::new(&format!("git checkout {ref_name}")).run("git checkout {ref_name}") + } + + fn compare_runs(head: String, base: String) -> Step { + // TODO: this should really be swapped... + named::bash(&format!("cargo perf-compare {base} {head} --save=results.md")) } named::job( Job::default() - .runs_on(runners::LINUX_SMALL) + .runs_on(runners::LINUX_DEFAULT) .add_step(steps::checkout_repo()) .add_step(echo_inputs(base, head)) - .add_step(create_results()) - .add_step(upload_artifact("results.md", "target/results.md")), + .add_step(git_checkout(base.var())) + .add_step(cargo_perf_test(base.var())) + .add_step(git_checkout(head.var())) + .add_step(cargo_perf_test(head.var())) + .add_step(compare_runs(head.var(), base.var())) + .add_step(upload_artifact("results.md", "results.md")), ) }