Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/downgrade.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ on:
required: false
type: boolean
os:
description: "The machine configuration on which the job needs to be run"
default: "ubuntu-latest"
description: "The machine configuration on which the job needs to be run. Defaults to the pinned label ubuntu-24.04 (NOT ubuntu-latest) so the downgrade leg lands on a GitHub-hosted runner: the SciML self-hosted demeter*/arctic* pool squats the ubuntu-latest label, but not the pinned ubuntu-24.04 label, so pinning forces GitHub-hosted (which has passwordless sudo for apt-packages provisioning)."
default: "ubuntu-24.04"
required: false
type: string
apt-packages:
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/grouped-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ on:

jobs:
detect:
runs-on: ubuntu-latest
# Pinned label ubuntu-24.04 (NOT ubuntu-latest) forces GitHub-hosted; the
# self-hosted demeter*/arctic* pool squats ubuntu-latest but not this label.
runs-on: ubuntu-24.04
outputs:
matrix: ${{ steps.compute.outputs.matrix }}
steps:
Expand Down
9 changes: 7 additions & 2 deletions .github/workflows/sublibrary-downgrade.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ on:

jobs:
discover:
runs-on: ubuntu-latest
# Pinned label ubuntu-24.04 (NOT ubuntu-latest) forces GitHub-hosted; the
# self-hosted demeter*/arctic* pool squats ubuntu-latest but not this label.
runs-on: ubuntu-24.04
outputs:
projects: ${{ steps.list.outputs.projects }}
has_any: ${{ steps.list.outputs.has_any }}
Expand Down Expand Up @@ -89,8 +91,11 @@ jobs:

test:
needs: discover
# Pinned label ubuntu-24.04 (NOT ubuntu-latest) forces GitHub-hosted: the
# self-hosted demeter*/arctic* pool squats ubuntu-latest but not the pinned
# label, and GitHub-hosted has passwordless sudo for apt-packages.
if: needs.discover.outputs.has_any == 'true'
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
container: ${{ inputs.container }}
strategy:
fail-fast: false
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/sublibrary-project-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ on:

jobs:
detect:
runs-on: ubuntu-latest
# Pinned label ubuntu-24.04 (NOT ubuntu-latest) forces GitHub-hosted; the
# self-hosted demeter*/arctic* pool squats ubuntu-latest but not this label.
runs-on: ubuntu-24.04
outputs:
matrix: ${{ steps.compute.outputs.matrix }}
has_changes: ${{ steps.compute.outputs.has_changes }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ on:
required: false
type: boolean
os:
description: "The machine configuration on which the job needs to be run"
default: "ubuntu-latest"
description: "The machine configuration on which the job needs to be run. Defaults to the pinned label ubuntu-24.04 (NOT ubuntu-latest) so default legs land on GitHub-hosted runners: the SciML self-hosted demeter*/arctic* pool squats the ubuntu-latest label, but not the pinned ubuntu-24.04 label, so pinning forces GitHub-hosted (which has passwordless sudo for apt-packages provisioning). Pass a self-hosted label array via `runner` to opt back into self-hosted (e.g. GPU groups)."
default: "ubuntu-24.04"
required: false
type: string
cache:
Expand Down
16 changes: 12 additions & 4 deletions scripts/compute_affected_sublibraries.jl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,15 @@
# runner = ["self-hosted", "Linux", "X64", "gpu"]
#
# Optional fields per group:
# runner — string or array of labels (default: "ubuntu-latest")
# runner — string or array of labels (default: "ubuntu-24.04"). The
# default is the PINNED ubuntu-24.04 label (NOT ubuntu-latest)
# so default groups (Core/QA/…) land on GitHub-hosted runners:
# the SciML self-hosted demeter*/arctic* pool squats the
# ubuntu-latest label but not the pinned ubuntu-24.04 label, so
# pinning forces GitHub-hosted (which has passwordless sudo for
# apt provisioning). A group that needs self-hosted (e.g. GPU)
# sets `runner` explicitly to a self-hosted label array, which
# overrides this default and is preserved unchanged.
# os — array of OS runners for an OS matrix (root matrix only; the
# group runs once per OS, e.g. ["ubuntu-latest","windows-latest",
# "macos-latest"]). Empty -> use `runner`. Don't combine with a
Expand Down Expand Up @@ -153,7 +161,7 @@ end

function parse_test_group(config::AbstractDict)
versions = convert(Vector{String}, config["versions"])
runner_raw = get(config, "runner", "ubuntu-latest")
runner_raw = get(config, "runner", "ubuntu-24.04")
runner = runner_raw isa Vector ? convert(Vector{String}, runner_raw) : runner_raw::String
timeout = Int(get(config, "timeout", 120))
num_threads = Int(get(config, "num_threads", 1))
Expand All @@ -170,7 +178,7 @@ function load_test_groups(lib_dir::String, pkg::String)
return Dict{String, TestGroupConfig}(name => parse_test_group(config) for (name, config) in toml)
end
return Dict{String, TestGroupConfig}(
k => TestGroupConfig(v, "ubuntu-latest", 120, 1, false, false, String[]) for (k, v) in DEFAULT_TEST_GROUPS
k => TestGroupConfig(v, "ubuntu-24.04", 120, 1, false, false, String[]) for (k, v) in DEFAULT_TEST_GROUPS
)
end

Expand All @@ -192,7 +200,7 @@ function load_root_test_groups(repo_root::String)
isempty(groups) || return groups
end
return Dict{String, TestGroupConfig}(
k => TestGroupConfig(v, "ubuntu-latest", 120, 1, false, false, String[]) for (k, v) in DEFAULT_ROOT_GROUPS
k => TestGroupConfig(v, "ubuntu-24.04", 120, 1, false, false, String[]) for (k, v) in DEFAULT_ROOT_GROUPS
)
end

Expand Down
7 changes: 5 additions & 2 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,9 @@ end
@test Set((e.group, e.version) for e in build_root_matrix(d)) ==
Set([("Core", "lts"), ("Core", "1"), ("Core", "pre")])
@test all(e -> e.continue_on_error == false, build_root_matrix(d))
# Default runner is the pinned GitHub-hosted label (forces GitHub-hosted off
# the self-hosted pool that squats ubuntu-latest), NOT ubuntu-latest.
@test all(e -> e.runner == "ubuntu-24.04", build_root_matrix(d))

mkpath(joinpath(d, "test"))
write(
Expand Down Expand Up @@ -236,9 +239,9 @@ end
@test length(core) == 6
@test Set((e.version, e.runner) for e in core) ==
Set((v, o) for v in ["lts", "1"] for o in ["ubuntu-latest", "windows-latest", "macos-latest"])
# QA: no os -> single default ubuntu runner.
# QA: no os -> single default GitHub-hosted runner (pinned ubuntu-24.04).
qa = filter(e -> e.group == "QA", m)
@test length(qa) == 1 && only(qa).runner == "ubuntu-latest"
@test length(qa) == 1 && only(qa).runner == "ubuntu-24.04"
# GPU: custom runner, no OS fan-out.
gpu = filter(e -> e.group == "GPU", m)
@test length(gpu) == 1 && only(gpu).runner == ["self-hosted", "Linux", "X64", "gpu"]
Expand Down
Loading