From 2b65a5f0ac95286ee86527c415047e0b8b7907dd Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 20 Apr 2026 16:23:05 +0100 Subject: [PATCH] ci: use faster Blacksmith runners --- .github/workflows/ci.yml | 63 +++++++++++++++------------ .github/workflows/install-smoke.yml | 12 ++--- .github/workflows/workflow-sanity.yml | 6 +-- 3 files changed, 43 insertions(+), 38 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6d222eb124c..d9f847d45e6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: permissions: contents: read if: github.event_name != 'pull_request' || !github.event.pull_request.draft - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 outputs: docs_only: ${{ steps.manifest.outputs.docs_only }} @@ -302,7 +302,7 @@ jobs: permissions: contents: read if: github.event_name != 'pull_request' || !github.event.pull_request.draft - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 env: PRE_COMMIT_CACHE_KEY_SUFFIX: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.sha }} @@ -402,7 +402,7 @@ jobs: contents: read needs: [preflight] if: needs.preflight.outputs.run_build_artifacts == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 steps: - name: Checkout @@ -499,7 +499,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight] if: needs.preflight.outputs.run_checks_fast == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 60 strategy: fail-fast: false @@ -584,7 +584,7 @@ jobs: name: "checks-fast-protocol" needs: [preflight] if: needs.preflight.outputs.run_checks_fast == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 30 steps: - name: Checkout @@ -649,7 +649,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight] if: needs.preflight.outputs.run_checks_fast == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 60 strategy: fail-fast: false @@ -719,7 +719,7 @@ jobs: name: checks-node-extensions needs: [preflight, checks-node-extensions-shard] if: always() && needs.preflight.outputs.run_checks_fast == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 5 steps: - name: Verify extension shards @@ -737,7 +737,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight, build-artifacts] if: always() && needs.preflight.outputs.run_checks == 'true' && needs.build-artifacts.result == 'success' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 60 strategy: fail-fast: false @@ -809,14 +809,17 @@ jobs: env: TASK: ${{ matrix.task }} run: | - echo "OPENCLAW_VITEST_MAX_WORKERS=2" >> "$GITHUB_ENV" - if [ "$TASK" = "test" ]; then - echo "OPENCLAW_TEST_PROJECTS_LEAF_SHARDS=1" >> "$GITHUB_ENV" - echo "OPENCLAW_TEST_SKIP_FULL_EXTENSIONS_SHARD=1" >> "$GITHUB_ENV" - fi - if [ "$TASK" = "channels" ]; then - echo "OPENCLAW_VITEST_MAX_WORKERS=1" >> "$GITHUB_ENV" - fi + { + echo "OPENCLAW_VITEST_MAX_WORKERS=2" + if [ "$TASK" = "test" ]; then + echo "OPENCLAW_TEST_PROJECTS_LEAF_SHARDS=1" + echo "OPENCLAW_TEST_PROJECTS_PARALLEL=4" + echo "OPENCLAW_TEST_SKIP_FULL_EXTENSIONS_SHARD=1" + fi + if [ "$TASK" = "channels" ]; then + echo "OPENCLAW_VITEST_MAX_WORKERS=1" + fi + } >> "$GITHUB_ENV" - name: Download dist artifact if: matrix.task == 'test' @@ -866,7 +869,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight, build-artifacts] if: always() && needs.preflight.outputs.run_checks == 'true' && needs.build-artifacts.result == 'success' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 60 strategy: fail-fast: false @@ -928,7 +931,7 @@ jobs: install-bun: "false" - name: Configure Node test resources - run: echo "OPENCLAW_VITEST_MAX_WORKERS=2" >> "$GITHUB_ENV" + run: echo "OPENCLAW_VITEST_MAX_WORKERS=4" >> "$GITHUB_ENV" - name: Restore dist cache id: dist-cache @@ -998,7 +1001,7 @@ jobs: name: checks-node-core needs: [preflight, checks-node-core-test-shard] if: always() && needs.preflight.outputs.run_checks == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 5 steps: - name: Verify node test shards @@ -1016,7 +1019,7 @@ jobs: name: "extension-fast" needs: [preflight] if: needs.preflight.outputs.run_extension_fast == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 60 strategy: fail-fast: false @@ -1087,7 +1090,7 @@ jobs: name: "check" needs: [preflight] if: always() && needs.preflight.outputs.run_check == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 steps: - name: Checkout @@ -1162,7 +1165,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight] if: always() && needs.preflight.outputs.run_check_additional == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 strategy: fail-fast: false @@ -1232,7 +1235,7 @@ jobs: env: ADDITIONAL_CHECK_GROUP: ${{ matrix.group }} RUN_CONTROL_UI_I18N: ${{ needs.preflight.outputs.run_control_ui_i18n }} - OPENCLAW_EXTENSION_BOUNDARY_CONCURRENCY: 4 + OPENCLAW_EXTENSION_BOUNDARY_CONCURRENCY: 8 shell: bash run: | set -euo pipefail @@ -1307,7 +1310,7 @@ jobs: name: "check-additional" needs: [preflight, check-additional-shard] if: always() && needs.preflight.outputs.run_check_additional == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 5 steps: - name: Verify additional check shards @@ -1325,7 +1328,7 @@ jobs: name: "build-smoke" needs: [preflight, build-artifacts] if: always() && needs.preflight.outputs.run_build_smoke == 'true' && (github.event_name != 'push' || needs.build-artifacts.result == 'success') - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 steps: - name: Checkout @@ -1421,7 +1424,7 @@ jobs: contents: read needs: [preflight] if: needs.preflight.outputs.run_check_docs == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 steps: - name: Checkout @@ -1485,7 +1488,7 @@ jobs: contents: read needs: [preflight] if: needs.preflight.outputs.run_skills_python_job == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 steps: - name: Checkout @@ -1576,7 +1579,9 @@ jobs: pnpm -v - name: Capture node path - run: echo "NODE_BIN=$(dirname \"$(node -p \"process.execPath\")\")" >> "$GITHUB_ENV" + run: | + node_bin="$(dirname "$(node -p 'process.execPath')")" + echo "NODE_BIN=$node_bin" >> "$GITHUB_ENV" - name: Install dependencies env: @@ -1818,7 +1823,7 @@ jobs: name: ${{ matrix.check_name }} needs: [preflight] if: needs.preflight.outputs.run_android_job == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 timeout-minutes: 20 strategy: fail-fast: false diff --git a/.github/workflows/install-smoke.yml b/.github/workflows/install-smoke.yml index d0fdda8c6bf..2a61a525b83 100644 --- a/.github/workflows/install-smoke.yml +++ b/.github/workflows/install-smoke.yml @@ -20,7 +20,7 @@ env: jobs: preflight: if: github.event_name != 'pull_request' || !github.event.pull_request.draft - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 outputs: docs_only: ${{ steps.manifest.outputs.docs_only }} run_install_smoke: ${{ steps.manifest.outputs.run_install_smoke }} @@ -85,7 +85,7 @@ jobs: install-smoke: needs: [preflight] if: needs.preflight.outputs.run_install_smoke == 'true' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 env: DOCKER_BUILD_SUMMARY: "false" DOCKER_BUILD_RECORD_UPLOAD: "false" @@ -93,11 +93,11 @@ jobs: - name: Checkout CLI uses: actions/checkout@v6 - - name: Set up Docker Builder - uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4 + - name: Set up Blacksmith Docker Builder + uses: useblacksmith/setup-docker-builder@ac083cc84672d01c60d5e8561d0a939b697de542 # v1 - # Blacksmith can fall back to the local docker driver, which rejects gha - # cache export/import. Keep smoke builds driver-agnostic. + # Blacksmith's builder owns the Docker layer cache; keep smoke builds off + # explicit gha cache directives so local tags still load cleanly. - name: Build root Dockerfile smoke image uses: useblacksmith/build-push-action@cbd1f60d194a98cb3be5523b15134501eaf0fbf3 # v2 with: diff --git a/.github/workflows/workflow-sanity.yml b/.github/workflows/workflow-sanity.yml index a2d7b6cc1bd..830a50188ac 100644 --- a/.github/workflows/workflow-sanity.yml +++ b/.github/workflows/workflow-sanity.yml @@ -19,7 +19,7 @@ env: jobs: no-tabs: if: github.event_name != 'workflow_dispatch' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 steps: - name: Checkout uses: actions/checkout@v6 @@ -51,7 +51,7 @@ jobs: actionlint: if: github.event_name != 'workflow_dispatch' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 steps: - name: Checkout uses: actions/checkout@v6 @@ -83,7 +83,7 @@ jobs: generated-doc-baselines: if: github.event_name == 'workflow_dispatch' - runs-on: blacksmith-16vcpu-ubuntu-2404 + runs-on: blacksmith-32vcpu-ubuntu-2404 steps: - name: Checkout uses: actions/checkout@v6