Revert "Try namespace mac runners (#47675)" (#47721)

Conrad Irwin created

This broke the libgit2 bundling silently

Release Notes:

- N/A

Change summary

.github/actionlint.yml                               |  2 
.github/workflows/release.yml                        | 23 +-------
.github/workflows/release_nightly.yml                | 23 +++++---
.github/workflows/run_bundling.yml                   |  4 
.github/workflows/run_tests.yml                      | 36 +++++--------
Cargo.lock                                           |  4 
Cargo.toml                                           |  2 
crates/collab/src/db/tests.rs                        |  1 
crates/collab/tests/integration/db_tests.rs          |  6 -
crates/collab/tests/integration/db_tests/db_tests.rs |  6 -
tooling/xtask/src/tasks/workflows/nix_build.rs       | 33 +++++++++++-
tooling/xtask/src/tasks/workflows/run_tests.rs       | 31 ++---------
tooling/xtask/src/tasks/workflows/runners.rs         |  2 
13 files changed, 78 insertions(+), 95 deletions(-)

Detailed changes

.github/actionlint.yml 🔗

@@ -29,8 +29,6 @@ self-hosted-runner:
     # Namespace Limited Preview
     - namespace-profile-8x16-ubuntu-2004-arm-m4
     - namespace-profile-8x32-ubuntu-2004-arm-m4
-    # Namespace mac
-    - namespace-profile-mac-large
     # Self Hosted Runners
     - self-mini-macos
     - self-32vcpu-windows-2022

.github/workflows/release.yml 🔗

@@ -11,7 +11,7 @@ on:
 jobs:
   run_tests_mac:
     if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     steps:
     - name: steps::checkout_repo
       uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@@ -22,17 +22,10 @@ jobs:
         mkdir -p ./../.cargo
         cp ./.cargo/ci-config.toml ./../.cargo/config.toml
       shell: bash -euxo pipefail {0}
-    - name: steps::cache_rust_dependencies_namespace
-      uses: namespacelabs/nscloud-cache-action@v1
-      with:
-        cache: rust
-        path: ~/.rustup
     - name: steps::setup_node
       uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
       with:
         node-version: '20'
-    - name: steps::cargo_install_nextest
-      uses: taiki-e/install-action@nextest
     - name: steps::clear_target_dir_if_large
       run: ./script/clear-target-dir-if-larger-than 300
       shell: bash -euxo pipefail {0}
@@ -90,14 +83,6 @@ jobs:
         rm -rf ./../.cargo
       shell: bash -euxo pipefail {0}
     timeout-minutes: 60
-    services:
-      postgres:
-        image: postgres:15
-        env:
-          POSTGRES_HOST_AUTH_METHOD: trust
-        ports:
-        - 5432:5432
-        options: --health-cmd pg_isready --health-interval 500ms --health-timeout 5s --health-retries 10
   run_tests_windows:
     if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
     runs-on: self-32vcpu-windows-2022
@@ -129,7 +114,7 @@ jobs:
     timeout-minutes: 60
   clippy_mac:
     if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     steps:
     - name: steps::checkout_repo
       uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@@ -339,7 +324,7 @@ jobs:
     - run_tests_mac
     - clippy_mac
     - check_scripts
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       CARGO_INCREMENTAL: 0
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
@@ -386,7 +371,7 @@ jobs:
     - run_tests_mac
     - clippy_mac
     - check_scripts
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       CARGO_INCREMENTAL: 0
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}

.github/workflows/release_nightly.yml 🔗

@@ -13,7 +13,7 @@ on:
 jobs:
   check_style:
     if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     steps:
     - name: steps::checkout_repo
       uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@@ -180,7 +180,7 @@ jobs:
     - check_style
     - run_tests_windows
     - clippy_windows
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       CARGO_INCREMENTAL: 0
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
@@ -234,7 +234,7 @@ jobs:
     - check_style
     - run_tests_windows
     - clippy_windows
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       CARGO_INCREMENTAL: 0
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
@@ -425,7 +425,7 @@ jobs:
     - check_style
     - run_tests_windows
     if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
       ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
@@ -436,10 +436,11 @@ jobs:
       uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
       with:
         clean: false
-    - name: nix_build::build_nix::install_nix
-      uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
-      with:
-        github_access_token: ${{ secrets.GITHUB_TOKEN }}
+    - name: nix_build::build_nix::set_path
+      run: |
+        echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
+        echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
+      shell: bash -euxo pipefail {0}
     - name: nix_build::build_nix::cachix_action
       uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
       with:
@@ -449,6 +450,12 @@ jobs:
     - name: nix_build::build_nix::build
       run: nix build .#default -L --accept-flake-config
       shell: bash -euxo pipefail {0}
+    - name: nix_build::build_nix::limit_store
+      run: |-
+        if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
+            nix-collect-garbage -d || true
+        fi
+      shell: bash -euxo pipefail {0}
     timeout-minutes: 60
     continue-on-error: true
   update_nightly_tag:

.github/workflows/run_bundling.yml 🔗

@@ -100,7 +100,7 @@ jobs:
     if: |-
       (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
       (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       CARGO_INCREMENTAL: 0
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
@@ -146,7 +146,7 @@ jobs:
     if: |-
       (github.event.action == 'labeled' && github.event.label.name == 'run-bundling') ||
       (github.event.action == 'synchronize' && contains(github.event.pull_request.labels.*.name, 'run-bundling'))
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       CARGO_INCREMENTAL: 0
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}

.github/workflows/run_tests.yml 🔗

@@ -148,7 +148,7 @@ jobs:
     needs:
     - orchestrate
     if: needs.orchestrate.outputs.run_tests == 'true'
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     steps:
     - name: steps::checkout_repo
       uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@@ -241,19 +241,11 @@ jobs:
         rm -rf ./../.cargo
       shell: bash -euxo pipefail {0}
     timeout-minutes: 60
-    services:
-      postgres:
-        image: postgres:15
-        env:
-          POSTGRES_HOST_AUTH_METHOD: trust
-        ports:
-        - 5432:5432
-        options: --health-cmd pg_isready --health-interval 500ms --health-timeout 5s --health-retries 10
   run_tests_mac:
     needs:
     - orchestrate
     if: needs.orchestrate.outputs.run_tests == 'true'
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     steps:
     - name: steps::checkout_repo
       uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@@ -264,17 +256,10 @@ jobs:
         mkdir -p ./../.cargo
         cp ./.cargo/ci-config.toml ./../.cargo/config.toml
       shell: bash -euxo pipefail {0}
-    - name: steps::cache_rust_dependencies_namespace
-      uses: namespacelabs/nscloud-cache-action@v1
-      with:
-        cache: rust
-        path: ~/.rustup
     - name: steps::setup_node
       uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
       with:
         node-version: '20'
-    - name: steps::cargo_install_nextest
-      uses: taiki-e/install-action@nextest
     - name: steps::clear_target_dir_if_large
       run: ./script/clear-target-dir-if-larger-than 300
       shell: bash -euxo pipefail {0}
@@ -542,7 +527,7 @@ jobs:
     needs:
     - orchestrate
     if: needs.orchestrate.outputs.run_nix == 'true'
-    runs-on: namespace-profile-mac-large
+    runs-on: self-mini-macos
     env:
       ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
       ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
@@ -553,10 +538,11 @@ jobs:
       uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
       with:
         clean: false
-    - name: nix_build::build_nix::install_nix
-      uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
-      with:
-        github_access_token: ${{ secrets.GITHUB_TOKEN }}
+    - name: nix_build::build_nix::set_path
+      run: |
+        echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
+        echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
+      shell: bash -euxo pipefail {0}
     - name: nix_build::build_nix::cachix_action
       uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
       with:
@@ -567,6 +553,12 @@ jobs:
     - name: nix_build::build_nix::build
       run: nix build .#debug -L --accept-flake-config
       shell: bash -euxo pipefail {0}
+    - name: nix_build::build_nix::limit_store
+      run: |-
+        if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
+            nix-collect-garbage -d || true
+        fi
+      shell: bash -euxo pipefail {0}
     timeout-minutes: 60
     continue-on-error: true
   check_postgres_and_protobuf_migrations:

Cargo.lock 🔗

@@ -7079,7 +7079,7 @@ dependencies = [
 [[package]]
 name = "gh-workflow"
 version = "0.8.0"
-source = "git+https://github.com/zed-industries/gh-workflow?rev=c9eac0ed361583e1072860d96776fa52775b82ac#c9eac0ed361583e1072860d96776fa52775b82ac"
+source = "git+https://github.com/zed-industries/gh-workflow?rev=09acfdf2bd5c1d6254abefd609c808ff73547b2c#09acfdf2bd5c1d6254abefd609c808ff73547b2c"
 dependencies = [
  "async-trait",
  "derive_more 2.0.1",
@@ -7096,7 +7096,7 @@ dependencies = [
 [[package]]
 name = "gh-workflow-macros"
 version = "0.8.0"
-source = "git+https://github.com/zed-industries/gh-workflow?rev=c9eac0ed361583e1072860d96776fa52775b82ac#c9eac0ed361583e1072860d96776fa52775b82ac"
+source = "git+https://github.com/zed-industries/gh-workflow?rev=09acfdf2bd5c1d6254abefd609c808ff73547b2c#09acfdf2bd5c1d6254abefd609c808ff73547b2c"
 dependencies = [
  "heck 0.5.0",
  "quote",

Cargo.toml 🔗

@@ -528,7 +528,7 @@ fancy-regex = "0.16.0"
 fork = "0.4.0"
 futures = "0.3"
 futures-lite = "1.13"
-gh-workflow = { git = "https://github.com/zed-industries/gh-workflow", rev = "c9eac0ed361583e1072860d96776fa52775b82ac" }
+gh-workflow = { git = "https://github.com/zed-industries/gh-workflow", rev = "09acfdf2bd5c1d6254abefd609c808ff73547b2c" }
 git2 = { version = "0.20.1", default-features = false }
 globset = "0.4"
 handlebars = "4.3"

crates/collab/tests/integration/db_tests.rs 🔗

@@ -122,13 +122,9 @@ impl TestDb {
 #[macro_export]
 macro_rules! test_both_dbs {
     ($test_name:ident, $postgres_test_name:ident, $sqlite_test_name:ident) => {
+        #[cfg(target_os = "macos")]
         #[gpui::test]
         async fn $postgres_test_name(cx: &mut gpui::TestAppContext) {
-            // In CI, only run postgres tests on Linux (where we have the postgres service).
-            // Locally, always run them (assuming postgres is available).
-            if std::env::var("CI").is_ok() && !cfg!(target_os = "linux") {
-                return;
-            }
             let test_db = $crate::db_tests::TestDb::postgres(cx.executor().clone());
             $test_name(test_db.db()).await;
         }

crates/collab/tests/integration/db_tests/db_tests.rs 🔗

@@ -542,13 +542,9 @@ fn test_fuzzy_like_string() {
     assert_eq!(Database::fuzzy_like_string(" z  "), "%z%");
 }
 
+#[cfg(target_os = "macos")]
 #[gpui::test]
 async fn test_fuzzy_search_users(cx: &mut gpui::TestAppContext) {
-    // In CI, only run postgres tests on Linux (where we have the postgres service).
-    // Locally, always run them (assuming postgres is available).
-    if std::env::var("CI").is_ok() && !cfg!(target_os = "linux") {
-        return;
-    }
     let test_db = TestDb::postgres(cx.executor());
     let db = test_db.db();
     for (i, github_login) in [

tooling/xtask/src/tasks/workflows/nix_build.rs 🔗

@@ -5,6 +5,7 @@ use crate::tasks::workflows::{
 
 use super::{runners, steps, steps::named, vars};
 use gh_workflow::*;
+use indoc::indoc;
 
 pub(crate) fn build_nix(
     platform: Platform,
@@ -13,6 +14,16 @@ pub(crate) fn build_nix(
     cachix_filter: Option<&str>,
     deps: &[&NamedJob],
 ) -> NamedJob {
+    // on our macs we manually install nix. for some reason the cachix action is running
+    // under a non-login /bin/bash shell which doesn't source the proper script to add the
+    // nix profile to PATH, so we manually add them here
+    pub fn set_path() -> Step<Run> {
+        named::bash(indoc! {r#"
+                echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
+                echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
+            "#})
+    }
+
     pub fn install_nix() -> Step<Use> {
         named::uses(
             "cachix",
@@ -44,6 +55,14 @@ pub(crate) fn build_nix(
         ))
     }
 
+    pub fn limit_store() -> Step<Run> {
+        named::bash(indoc! {r#"
+                if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
+                    nix-collect-garbage -d || true
+                fi"#
+        })
+    }
+
     let runner = match platform {
         Platform::Windows => unimplemented!(),
         Platform::Linux => runners::LINUX_X86_BUNDLER,
@@ -67,10 +86,16 @@ pub(crate) fn build_nix(
         job = job.needs(deps.iter().map(|d| d.name.clone()).collect::<Vec<String>>());
     }
 
-    job = job
-        .add_step(install_nix())
-        .add_step(cachix_action(cachix_filter))
-        .add_step(build(&flake_output));
+    job = if platform == Platform::Linux {
+        job.add_step(install_nix())
+            .add_step(cachix_action(cachix_filter))
+            .add_step(build(&flake_output))
+    } else {
+        job.add_step(set_path())
+            .add_step(cachix_action(cachix_filter))
+            .add_step(build(&flake_output))
+            .add_step(limit_store())
+    };
 
     NamedJob {
         name: format!("build_nix_{platform}_{arch}"),

tooling/xtask/src/tasks/workflows/run_tests.rs 🔗

@@ -1,6 +1,5 @@
 use gh_workflow::{
-    Concurrency, Container, Event, Expression, Job, Port, PullRequest, Push, Run, Step, Use,
-    Workflow,
+    Concurrency, Event, Expression, Job, PullRequest, Push, Run, Step, Use, Workflow,
 };
 use indexmap::IndexMap;
 
@@ -341,35 +340,19 @@ pub(crate) fn run_platform_tests(platform: Platform) -> NamedJob {
         name: format!("run_tests_{platform}"),
         job: release_job(&[])
             .runs_on(runner)
-            .when(platform == Platform::Linux, |job| {
-                job.add_service(
-                    "postgres",
-                    Container::new("postgres:15")
-                        .add_env(("POSTGRES_HOST_AUTH_METHOD", "trust"))
-                        .ports(vec![Port::Name("5432:5432".into())])
-                        .options(
-                            "--health-cmd pg_isready \
-                             --health-interval 500ms \
-                             --health-timeout 5s \
-                             --health-retries 10",
-                        ),
-                )
-            })
             .add_step(steps::checkout_repo())
             .add_step(steps::setup_cargo_config(platform))
-            .when(
-                platform == Platform::Linux || platform == Platform::Mac,
-                |this| this.add_step(steps::cache_rust_dependencies_namespace()),
-            )
+            .when(platform == Platform::Linux, |this| {
+                this.add_step(steps::cache_rust_dependencies_namespace())
+            })
             .when(
                 platform == Platform::Linux,
                 steps::install_linux_dependencies,
             )
             .add_step(steps::setup_node())
-            .when(
-                platform == Platform::Linux || platform == Platform::Mac,
-                |job| job.add_step(steps::cargo_install_nextest()),
-            )
+            .when(platform == Platform::Linux, |job| {
+                job.add_step(steps::cargo_install_nextest())
+            })
             .add_step(steps::clear_target_dir_if_large(platform))
             .add_step(steps::cargo_nextest(platform))
             .add_step(steps::cleanup_cargo_config(platform)),

tooling/xtask/src/tasks/workflows/runners.rs 🔗

@@ -11,7 +11,7 @@ pub const LINUX_ARM_BUNDLER: Runner = Runner("namespace-profile-8x32-ubuntu-2004
 // Larger Ubuntu runner with glibc 2.39 for extension bundling
 pub const LINUX_LARGE_RAM: Runner = Runner("namespace-profile-8x32-ubuntu-2404");
 
-pub const MAC_DEFAULT: Runner = Runner("namespace-profile-mac-large");
+pub const MAC_DEFAULT: Runner = Runner("self-mini-macos");
 pub const WINDOWS_DEFAULT: Runner = Runner("self-32vcpu-windows-2022");
 
 pub struct Runner(&'static str);