Reapply "Try namespace mac runners (#47675)" (#47721) (#47727)

This reverts commit c50120199f.

Closes #ISSUE

Release Notes:

- N/A
This commit is contained in:
Conrad Irwin 2026-01-26 22:02:52 -07:00 committed by GitHub
parent d0c3b33fa2
commit e868446ea2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 96 additions and 79 deletions

View file

@ -29,6 +29,8 @@ 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

View file

@ -11,7 +11,7 @@ on:
jobs:
run_tests_mac:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
steps:
- name: steps::checkout_repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@ -22,10 +22,17 @@ 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}
@ -83,6 +90,14 @@ 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
@ -114,7 +129,7 @@ jobs:
timeout-minutes: 60
clippy_mac:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
steps:
- name: steps::checkout_repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@ -324,7 +339,7 @@ jobs:
- run_tests_mac
- clippy_mac
- check_scripts
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
env:
CARGO_INCREMENTAL: 0
ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
@ -371,7 +386,7 @@ jobs:
- run_tests_mac
- clippy_mac
- check_scripts
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
env:
CARGO_INCREMENTAL: 0
ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}

View file

@ -13,7 +13,7 @@ on:
jobs:
check_style:
if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
steps:
- name: steps::checkout_repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@ -180,7 +180,7 @@ jobs:
- check_style
- run_tests_windows
- clippy_windows
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
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: self-mini-macos
runs-on: namespace-profile-mac-large
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: self-mini-macos
runs-on: namespace-profile-mac-large
env:
ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
@ -436,11 +436,10 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
clean: false
- 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::install_nix
uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
- name: nix_build::build_nix::cachix_action
uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
with:
@ -450,12 +449,6 @@ 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:

View file

@ -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: self-mini-macos
runs-on: namespace-profile-mac-large
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: self-mini-macos
runs-on: namespace-profile-mac-large
env:
CARGO_INCREMENTAL: 0
ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}

View file

@ -148,7 +148,7 @@ jobs:
needs:
- orchestrate
if: needs.orchestrate.outputs.run_tests == 'true'
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
steps:
- name: steps::checkout_repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@ -241,11 +241,19 @@ 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: self-mini-macos
runs-on: namespace-profile-mac-large
steps:
- name: steps::checkout_repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
@ -256,10 +264,17 @@ 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}
@ -527,7 +542,7 @@ jobs:
needs:
- orchestrate
if: needs.orchestrate.outputs.run_nix == 'true'
runs-on: self-mini-macos
runs-on: namespace-profile-mac-large
env:
ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
@ -538,11 +553,10 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
clean: false
- 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::install_nix
uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
- name: nix_build::build_nix::cachix_action
uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
with:
@ -553,12 +567,6 @@ 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:

4
Cargo.lock generated
View file

@ -7079,7 +7079,7 @@ dependencies = [
[[package]]
name = "gh-workflow"
version = "0.8.0"
source = "git+https://github.com/zed-industries/gh-workflow?rev=09acfdf2bd5c1d6254abefd609c808ff73547b2c#09acfdf2bd5c1d6254abefd609c808ff73547b2c"
source = "git+https://github.com/zed-industries/gh-workflow?rev=c9eac0ed361583e1072860d96776fa52775b82ac#c9eac0ed361583e1072860d96776fa52775b82ac"
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=09acfdf2bd5c1d6254abefd609c808ff73547b2c#09acfdf2bd5c1d6254abefd609c808ff73547b2c"
source = "git+https://github.com/zed-industries/gh-workflow?rev=c9eac0ed361583e1072860d96776fa52775b82ac#c9eac0ed361583e1072860d96776fa52775b82ac"
dependencies = [
"heck 0.5.0",
"quote",

View file

@ -528,8 +528,8 @@ 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 = "09acfdf2bd5c1d6254abefd609c808ff73547b2c" }
git2 = { version = "0.20.1", default-features = false }
gh-workflow = { git = "https://github.com/zed-industries/gh-workflow", rev = "c9eac0ed361583e1072860d96776fa52775b82ac" }
git2 = { version = "0.20.1", default-features = false, features = ["vendored-libgit2"] }
globset = "0.4"
handlebars = "4.3"
heck = "0.5"

View file

@ -1 +0,0 @@

View file

@ -122,9 +122,13 @@ 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;
}

View file

@ -542,9 +542,13 @@ 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 [

View file

@ -5,7 +5,6 @@ use crate::tasks::workflows::{
use super::{runners, steps, steps::named, vars};
use gh_workflow::*;
use indoc::indoc;
pub(crate) fn build_nix(
platform: Platform,
@ -14,16 +13,6 @@ 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",
@ -55,14 +44,6 @@ 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,
@ -86,16 +67,10 @@ pub(crate) fn build_nix(
job = job.needs(deps.iter().map(|d| d.name.clone()).collect::<Vec<String>>());
}
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())
};
job = job
.add_step(install_nix())
.add_step(cachix_action(cachix_filter))
.add_step(build(&flake_output));
NamedJob {
name: format!("build_nix_{platform}_{arch}"),

View file

@ -1,5 +1,6 @@
use gh_workflow::{
Concurrency, Event, Expression, Job, PullRequest, Push, Run, Step, Use, Workflow,
Concurrency, Container, Event, Expression, Job, Port, PullRequest, Push, Run, Step, Use,
Workflow,
};
use indexmap::IndexMap;
@ -340,19 +341,35 @@ 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, |this| {
this.add_step(steps::cache_rust_dependencies_namespace())
})
.when(
platform == Platform::Linux || platform == Platform::Mac,
|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, |job| {
job.add_step(steps::cargo_install_nextest())
})
.when(
platform == Platform::Linux || platform == Platform::Mac,
|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)),

View file

@ -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("self-mini-macos");
pub const MAC_DEFAULT: Runner = Runner("namespace-profile-mac-large");
pub const WINDOWS_DEFAULT: Runner = Runner("self-32vcpu-windows-2022");
pub struct Runner(&'static str);