setup test env

Conrad Irwin created

Change summary

.github/workflows/compare_perf.yml                | 17 +++++++++++-
tooling/xtask/src/tasks/workflows/compare_perf.rs | 22 +++++++++-------
2 files changed, 27 insertions(+), 12 deletions(-)

Detailed changes

.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}

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<Run> {
-        named::bash(&format!("echo {} {}", base.var(), head.var()))
-    }
-
     fn cargo_perf_test(ref_name: String) -> Step<Run> {
         // 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<Run> {
-        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<Run> {
         // 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)),
     )
 }