diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml index d4d589bfcb0a..e0cf95b4e97a 100644 --- a/.github/actionlint.yaml +++ b/.github/actionlint.yaml @@ -14,6 +14,10 @@ self-hosted-runner: - blacksmith-16vcpu-ubuntu-2404-arm - blacksmith-6vcpu-macos-latest - blacksmith-12vcpu-macos-latest + - blacksmith-6vcpu-macos-15 + - blacksmith-12vcpu-macos-15 + - blacksmith-6vcpu-macos-26 + - blacksmith-12vcpu-macos-26 # Ignore patterns for known issues paths: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4437c76a9c0c..aa16f3ae9df9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1595,7 +1595,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight] if: ${{ !cancelled() && always() && needs.preflight.outputs.run_macos_node == 'true' }} - runs-on: ${{ github.event_name == 'workflow_dispatch' && 'macos-latest' || (github.repository == 'openclaw/openclaw' && 'blacksmith-6vcpu-macos-latest' || 'macos-latest') }} + runs-on: ${{ github.event_name == 'workflow_dispatch' && 'macos-15' || (github.repository == 'openclaw/openclaw' && 'blacksmith-6vcpu-macos-15' || 'macos-15') }} timeout-minutes: 20 strategy: fail-fast: false @@ -1644,7 +1644,7 @@ jobs: name: "macos-swift" needs: [preflight] if: needs.preflight.outputs.run_macos_swift == 'true' - runs-on: ${{ github.event_name == 'workflow_dispatch' && 'macos-26' || (github.repository == 'openclaw/openclaw' && 'blacksmith-12vcpu-macos-latest' || 'macos-26') }} + runs-on: ${{ github.event_name == 'workflow_dispatch' && 'macos-26' || (github.repository == 'openclaw/openclaw' && 'blacksmith-12vcpu-macos-26' || 'macos-26') }} timeout-minutes: 20 steps: - name: Checkout diff --git a/.github/workflows/codeql-macos-critical-security.yml b/.github/workflows/codeql-macos-critical-security.yml index d2261691b5c3..1619b56cb7a0 100644 --- a/.github/workflows/codeql-macos-critical-security.yml +++ b/.github/workflows/codeql-macos-critical-security.yml @@ -20,7 +20,7 @@ permissions: jobs: macos: name: Critical Security (macOS) - runs-on: blacksmith-6vcpu-macos-latest + runs-on: blacksmith-6vcpu-macos-15 timeout-minutes: 45 steps: - name: Checkout diff --git a/.github/workflows/website-installer-sync.yml b/.github/workflows/website-installer-sync.yml index 0d6a5b921329..6f0f675ece69 100644 --- a/.github/workflows/website-installer-sync.yml +++ b/.github/workflows/website-installer-sync.yml @@ -90,7 +90,7 @@ jobs: bash -lc 'apt-get update -y && apt-get install -y curl && bash /tmp/install-cli.sh --prefix /tmp/openclaw --no-onboard --version latest && /tmp/openclaw/bin/openclaw --version' macos-installer: - runs-on: macos-latest + runs-on: macos-15 steps: - name: Checkout uses: actions/checkout@v6 diff --git a/apps/swabble/.github/workflows/ci.yml b/apps/swabble/.github/workflows/ci.yml index aff600f6df00..e6c12ccbe137 100644 --- a/apps/swabble/.github/workflows/ci.yml +++ b/apps/swabble/.github/workflows/ci.yml @@ -7,7 +7,7 @@ on: jobs: build-and-test: - runs-on: macos-latest + runs-on: macos-15 defaults: run: shell: bash diff --git a/docs/ci.md b/docs/ci.md index 576c069becbe..833b27e5d5f7 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -127,10 +127,10 @@ gh workflow run full-release-validation.yml --ref main -f ref= | `blacksmith-8vcpu-ubuntu-2404` | Linux Node test shards, bundled plugin test shards, `check-additional-*` shards, `android` | | `blacksmith-16vcpu-ubuntu-2404` | `build-artifacts`, `check-lint` (CPU-sensitive enough that 8 vCPU cost more than they saved); install-smoke Docker builds (32-vCPU queue time cost more than it saved) | | `blacksmith-16vcpu-windows-2025` | `checks-windows` | -| `blacksmith-6vcpu-macos-latest` | `macos-node` on `openclaw/openclaw`; forks fall back to `macos-latest` | -| `blacksmith-12vcpu-macos-latest` | `macos-swift` on `openclaw/openclaw`; forks fall back to `macos-latest` | +| `blacksmith-6vcpu-macos-15` | `macos-node` on `openclaw/openclaw`; forks fall back to `macos-15` | +| `blacksmith-12vcpu-macos-26` | `macos-swift` on `openclaw/openclaw`; forks fall back to `macos-26` | -Canonical-repo CI keeps Blacksmith as the default runner path. During `preflight`, `scripts/ci-runner-labels.mjs` checks recent queued and in-progress Actions runs for queued Blacksmith jobs. If a specific Blacksmith label already has queued jobs, downstream jobs that would use that exact label fall back to the matching GitHub-hosted runner (`ubuntu-24.04`, `windows-2025`, or `macos-latest`) for that run only. Other Blacksmith sizes in the same OS family stay on their primary labels. If the API probe fails, no fallback is applied. +Canonical-repo CI keeps Blacksmith as the default runner path. During `preflight`, `scripts/ci-runner-labels.mjs` checks recent queued and in-progress Actions runs for queued Blacksmith jobs. If a specific Blacksmith label already has queued jobs, downstream jobs that would use that exact label fall back to the matching GitHub-hosted runner (`ubuntu-24.04`, `windows-2025`, `macos-15`, or `macos-26`) for that run only. Other Blacksmith sizes in the same OS family stay on their primary labels. If the API probe fails, no fallback is applied. ## Local equivalents diff --git a/scripts/openclaw-cross-os-release-checks.ts b/scripts/openclaw-cross-os-release-checks.ts index cd1f1bb6c399..c23af2381459 100644 --- a/scripts/openclaw-cross-os-release-checks.ts +++ b/scripts/openclaw-cross-os-release-checks.ts @@ -266,7 +266,7 @@ export function resolveRunnerMatrix(params) { { os_id: "macos", display_name: "macOS", - runner: pick(params.macosRunner, params.varMacosRunner, "blacksmith-6vcpu-macos-latest"), + runner: pick(params.macosRunner, params.varMacosRunner, "blacksmith-6vcpu-macos-15"), artifact_name: "macos", }, ]; diff --git a/test/scripts/openclaw-cross-os-release-checks.test.ts b/test/scripts/openclaw-cross-os-release-checks.test.ts index 1c304a52e713..e4f9006737f7 100644 --- a/test/scripts/openclaw-cross-os-release-checks.test.ts +++ b/test/scripts/openclaw-cross-os-release-checks.test.ts @@ -537,7 +537,7 @@ describe("scripts/openclaw-cross-os-release-checks", () => { display_name: "macOS", lane: "fresh", os_id: "macos", - runner: "blacksmith-6vcpu-macos-latest", + runner: "blacksmith-6vcpu-macos-15", suite: "packaged-fresh", suite_label: "packaged fresh", }); diff --git a/test/scripts/website-installer-sync-workflow.test.ts b/test/scripts/website-installer-sync-workflow.test.ts index a7041e3376d7..2ac8db4c76a2 100644 --- a/test/scripts/website-installer-sync-workflow.test.ts +++ b/test/scripts/website-installer-sync-workflow.test.ts @@ -29,7 +29,7 @@ describe("website installer sync workflow", () => { expect(workflow).not.toContain("bash /tmp/install.sh --no-prompt --no-onboard"); expect(workflow).toContain("bash /tmp/install-cli.sh --prefix /tmp/openclaw"); expect(workflow).toContain("macos-installer:"); - expect(workflow).toContain("runs-on: macos-latest"); + expect(workflow).toContain("runs-on: macos-15"); expect(workflow).toContain("node-version: 24"); expect(workflow).toContain('OPENCLAW_NO_ONBOARD: "1"'); expect(workflow).toContain('OPENCLAW_NO_PROMPT: "1"');