

















@@ -36,6 +36,7 @@ jobs:
3636# work fan out from a single source of truth.
3737preflight:
3838permissions:
39+actions: read
3940contents: read
4041if: github.event_name != 'pull_request' || !github.event.pull_request.draft
4142runs-on: ubuntu-24.04
@@ -75,6 +76,12 @@ jobs:
7576run_macos_swift: ${{ steps.manifest.outputs.run_macos_swift }}
7677run_android_job: ${{ steps.manifest.outputs.run_android_job }}
7778android_matrix: ${{ steps.manifest.outputs.android_matrix }}
79+runner_4vcpu_ubuntu: ${{ steps.runner_labels.outputs.runner_4vcpu_ubuntu }}
80+runner_8vcpu_ubuntu: ${{ steps.runner_labels.outputs.runner_8vcpu_ubuntu }}
81+runner_16vcpu_ubuntu: ${{ steps.runner_labels.outputs.runner_16vcpu_ubuntu }}
82+runner_16vcpu_windows: ${{ steps.runner_labels.outputs.runner_16vcpu_windows }}
83+runner_6vcpu_macos: ${{ steps.runner_labels.outputs.runner_6vcpu_macos }}
84+runner_12vcpu_macos: ${{ steps.runner_labels.outputs.runner_12vcpu_macos }}
7885steps:
7986 - name: Checkout
8087uses: actions/checkout@v6
@@ -295,6 +302,13 @@ jobs:
295302 }
296303 EOF
297304305+ - name: Select runner labels
306+id: runner_labels
307+env:
308+GITHUB_TOKEN: ${{ github.token }}
309+OPENCLAW_CI_BLACKSMITH_FALLBACK: "true"
310+run: node scripts/ci-runner-labels.mjs
311+298312# Run the fast security/SCM checks in parallel with scope detection so the
299313# main Node jobs do not have to wait for Python/pre-commit setup.
300314security-scm-fast:
@@ -452,7 +466,7 @@ jobs:
452466contents: read
453467needs: [preflight]
454468if: needs.preflight.outputs.run_build_artifacts == 'true'
455-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
469+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_8vcpu_ubuntu || 'ubuntu-24.04' }}
456470timeout-minutes: 20
457471outputs:
458472channels-result: ${{ steps.built_artifact_checks.outputs['channels-result'] }}
@@ -651,7 +665,7 @@ jobs:
651665name: ${{ matrix.check_name }}
652666needs: [preflight]
653667if: needs.preflight.outputs.run_checks_fast_core == 'true'
654-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
668+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_4vcpu_ubuntu || 'ubuntu-24.04' }}
655669timeout-minutes: 60
656670strategy:
657671fail-fast: false
@@ -740,13 +754,67 @@ jobs:
740754 ;;
741755 esac
742756757+ ci-timings-summary:
758+permissions:
759+actions: read
760+contents: read
761+name: ci-timings-summary
762+needs:
763+ - preflight
764+ - security-fast
765+ - build-artifacts
766+ - checks-fast-core
767+ - checks-fast-plugin-contracts
768+ - checks-fast-channel-contracts
769+ - checks-fast-protocol
770+ - checks
771+ - checks-node-compat
772+ - checks-node-core-test
773+ - check
774+ - check-additional
775+ - build-smoke
776+ - check-docs
777+ - skills-python
778+ - checks-windows
779+ - macos-node
780+ - macos-swift
781+ - android
782+if: ${{ !cancelled() && always() && (github.event_name != 'pull_request' || !github.event.pull_request.draft) }}
783+runs-on: ubuntu-24.04
784+timeout-minutes: 5
785+steps:
786+ - name: Checkout
787+uses: actions/checkout@v6
788+with:
789+ref: ${{ needs.preflight.outputs.checkout_revision || github.sha }}
790+fetch-depth: 1
791+fetch-tags: false
792+persist-credentials: false
793+submodules: false
794+795+ - name: Write CI timing summary
796+env:
797+GITHUB_REPOSITORY: ${{ github.repository }}
798+GH_TOKEN: ${{ github.token }}
799+RUN_ID: ${{ github.run_id }}
800+run: |
801+ node scripts/ci-run-timings.mjs "$RUN_ID" --limit 25 > ci-timings-summary.txt
802+ cat ci-timings-summary.txt >> "$GITHUB_STEP_SUMMARY"
803+804+ - name: Upload CI timing summary
805+uses: actions/upload-artifact@v7
806+with:
807+name: ci-timings-summary
808+path: ci-timings-summary.txt
809+retention-days: 14
810+743811checks-fast-plugin-contracts-shard:
744812permissions:
745813contents: read
746814name: ${{ matrix.checkName }}
747815needs: [preflight]
748816if: needs.preflight.outputs.run_plugin_contracts_shards == 'true'
749-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
817+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_4vcpu_ubuntu || 'ubuntu-24.04' }}
750818timeout-minutes: 60
751819strategy:
752820fail-fast: false
@@ -1055,7 +1123,7 @@ jobs:
10551123name: checks-node-compat-node22
10561124needs: [preflight]
10571125if: needs.preflight.outputs.run_build_artifacts == 'true' && github.event_name == 'workflow_dispatch'
1058-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-4vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
1126+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_4vcpu_ubuntu || 'ubuntu-24.04' }}
10591127timeout-minutes: 60
10601128steps:
10611129 - name: Checkout
@@ -1132,7 +1200,7 @@ jobs:
11321200name: ${{ matrix.check_name }}
11331201needs: [preflight]
11341202if: needs.preflight.outputs.run_checks_node_core_nondist == 'true'
1135-runs-on: ${{ github.repository == 'openclaw/openclaw' && (matrix.runner || 'ubuntu-24.04') || 'ubuntu-24.04' }}
1203+runs-on: ${{ github.repository != 'openclaw/openclaw' && 'ubuntu-24.04' || matrix.runner == 'blacksmith-4vcpu-ubuntu-2404' && needs.preflight.outputs.runner_4vcpu_ubuntu || matrix.runner == 'blacksmith-8vcpu-ubuntu-2404' && needs.preflight.outputs.runner_8vcpu_ubuntu || matrix.runner == 'blacksmith-16vcpu-ubuntu-2404' && needs.preflight.outputs.runner_16vcpu_ubuntu || matrix.runner || 'ubuntu-24.04' }}
11361204timeout-minutes: 60
11371205strategy:
11381206fail-fast: false
@@ -1300,7 +1368,7 @@ jobs:
13001368name: ${{ matrix.check_name }}
13011369needs: [preflight]
13021370if: ${{ !cancelled() && always() && needs.preflight.outputs.run_check == 'true' }}
1303-runs-on: ${{ github.repository == 'openclaw/openclaw' && matrix.runner || 'ubuntu-24.04' }}
1371+runs-on: ${{ github.repository != 'openclaw/openclaw' && 'ubuntu-24.04' || matrix.runner == 'blacksmith-4vcpu-ubuntu-2404' && needs.preflight.outputs.runner_4vcpu_ubuntu || matrix.runner == 'blacksmith-8vcpu-ubuntu-2404' && needs.preflight.outputs.runner_8vcpu_ubuntu || matrix.runner == 'blacksmith-16vcpu-ubuntu-2404' && needs.preflight.outputs.runner_16vcpu_ubuntu || matrix.runner || 'ubuntu-24.04' }}
13041372timeout-minutes: 20
13051373strategy:
13061374fail-fast: false
@@ -1461,7 +1529,7 @@ jobs:
14611529name: ${{ matrix.check_name }}
14621530needs: [preflight]
14631531if: ${{ !cancelled() && always() && needs.preflight.outputs.run_check_additional == 'true' }}
1464-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
1532+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_8vcpu_ubuntu || 'ubuntu-24.04' }}
14651533timeout-minutes: 20
14661534strategy:
14671535fail-fast: false
@@ -1780,7 +1848,7 @@ jobs:
17801848name: ${{ matrix.check_name }}
17811849needs: [preflight]
17821850if: needs.preflight.outputs.run_checks_windows == 'true'
1783-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-16vcpu-windows-2025' || 'windows-2025' }}
1851+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_16vcpu_windows || 'windows-2025' }}
17841852timeout-minutes: 60
17851853env:
17861854NODE_OPTIONS: --max-old-space-size=6144
@@ -1893,7 +1961,7 @@ jobs:
18931961name: ${{ matrix.check_name }}
18941962needs: [preflight]
18951963if: ${{ !cancelled() && always() && needs.preflight.outputs.run_macos_node == 'true' }}
1896-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-6vcpu-macos-latest' || 'macos-latest' }}
1964+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_6vcpu_macos || 'macos-latest' }}
18971965timeout-minutes: 20
18981966strategy:
18991967fail-fast: false
@@ -1937,7 +2005,7 @@ jobs:
19372005name: "macos-swift"
19382006needs: [preflight]
19392007if: needs.preflight.outputs.run_macos_swift == 'true'
1940-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-12vcpu-macos-latest' || 'macos-latest' }}
2008+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_12vcpu_macos || 'macos-latest' }}
19412009timeout-minutes: 20
19422010steps:
19432011 - name: Checkout
@@ -2034,7 +2102,7 @@ jobs:
20342102name: ${{ matrix.check_name }}
20352103needs: [preflight]
20362104if: needs.preflight.outputs.run_android_job == 'true'
2037-runs-on: ${{ github.repository == 'openclaw/openclaw' && 'blacksmith-8vcpu-ubuntu-2404' || 'ubuntu-24.04' }}
2105+runs-on: ${{ github.repository == 'openclaw/openclaw' && needs.preflight.outputs.runner_8vcpu_ubuntu || 'ubuntu-24.04' }}
20382106timeout-minutes: 20
20392107strategy:
20402108fail-fast: false
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。