diff --git a/.github/workflows/compare_perf.yml b/.github/workflows/compare_perf.yml index 463ec843c66f805656ef43436453e2cda488c5a2..822ac6e76b68bb3d1636da2b3efa59c384ffe263 100644 --- a/.github/workflows/compare_perf.yml +++ b/.github/workflows/compare_perf.yml @@ -20,8 +20,16 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: clean: false - - name: compare_perf::run_perf::echo_inputs - run: echo ${{ inputs.base }} ${{ inputs.head }} + - name: steps::setup_cargo_config + run: | + mkdir -p ./../.cargo + cp ./.cargo/ci-config.toml ./../.cargo/config.toml + shell: bash -euxo pipefail {0} + - name: steps::setup_linux + run: ./script/linux + shell: bash -euxo pipefail {0} + - name: steps::install_mold + run: ./script/install-mold shell: bash -euxo pipefail {0} - name: compare_perf::run_perf::git_checkout run: git fetch origin ${{ inputs.base }} && git checkout ${{ inputs.base }} @@ -43,3 +51,8 @@ jobs: with: name: results.md path: results.md + - name: steps::cleanup_cargo_config + if: always() + run: | + rm -rf ./../.cargo + shell: bash -euxo pipefail {0} diff --git a/tooling/xtask/src/tasks/workflows/compare_perf.rs b/tooling/xtask/src/tasks/workflows/compare_perf.rs index 87beacea7a07ea6371a4c0d043ce9c17b1157142..e45020d0a9b728f2300e5d834fc36c46442fe589 100644 --- a/tooling/xtask/src/tasks/workflows/compare_perf.rs +++ b/tooling/xtask/src/tasks/workflows/compare_perf.rs @@ -1,8 +1,9 @@ use gh_workflow::*; +use crate::tasks::workflows::steps::FluentBuilder; use crate::tasks::workflows::{ runners, - steps::{self, NamedJob, named, upload_artifact}, + steps::{self, named, upload_artifact, NamedJob}, vars::Input, }; @@ -20,35 +21,36 @@ pub fn compare_perf() -> Workflow { } pub fn run_perf(base: &Input, head: &Input) -> NamedJob { - fn echo_inputs(base: &Input, head: &Input) -> Step { - named::bash(&format!("echo {} {}", base.var(), head.var())) - } - fn cargo_perf_test(ref_name: String) -> Step { // TODO: vim not gpui, and ideally allow args named::bash(&format!("cargo perf-test -p gpui -- --json={ref_name}")) } fn git_checkout(ref_name: String) -> Step { - named::bash( - &format!("git fetch origin {ref_name} && git checkout {ref_name}")) + named::bash(&format!( + "git fetch origin {ref_name} && 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::bash(&format!( + "cargo perf-compare {base} {head} --save=results.md" + )) } named::job( Job::default() .runs_on(runners::LINUX_DEFAULT) .add_step(steps::checkout_repo()) - .add_step(echo_inputs(base, head)) + .add_step(steps::setup_cargo_config(runners::Platform::Linux)) + .map(steps::install_linux_dependencies) .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")), + .add_step(upload_artifact("results.md", "results.md")) + .add_step(steps::cleanup_cargo_config(runners::Platform::Linux)), ) }