mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
fix(ci): use reliable Azure Crabbox capacity
This commit is contained in:
@@ -4,11 +4,11 @@ profile: openclaw-check
|
||||
provider: azure
|
||||
class: standard
|
||||
capacity:
|
||||
market: spot
|
||||
market: on-demand
|
||||
strategy: most-available
|
||||
# Fail closed instead of silently falling back to on-demand while the
|
||||
# Azure-backed billing account is the default runner path.
|
||||
fallback: spot-only
|
||||
# The Azure-backed billing account carries the OpenClaw runner credits; use
|
||||
# explicit on-demand capacity instead of low-priority spot, whose regional
|
||||
# quota is too small for broad maintainer proof or parallel Crabbox lanes.
|
||||
hints: true
|
||||
actions:
|
||||
workflow: .github/workflows/crabbox-hydrate.yml
|
||||
@@ -49,8 +49,8 @@ aws:
|
||||
region: eu-west-1
|
||||
rootGB: 400
|
||||
azure:
|
||||
# The OpenClaw Azure subscription has reliable D2 spot capacity in eastus2;
|
||||
# eastus rejects the same SKUs and can stall provisioning.
|
||||
# The OpenClaw Azure subscription is reliable in eastus2; eastus rejects the
|
||||
# same SKUs and can stall provisioning.
|
||||
location: eastus2
|
||||
sync:
|
||||
delete: true
|
||||
@@ -71,14 +71,16 @@ env:
|
||||
- OPENCLAW_*
|
||||
ssh:
|
||||
user: crabbox
|
||||
port: "2222"
|
||||
# Azure coordinator leases expose SSH on 22. The run wrapper can fall back
|
||||
# from 2222, but `crabbox job run` hydrates via the configured port directly.
|
||||
port: "22"
|
||||
jobs:
|
||||
prewarm:
|
||||
provider: azure
|
||||
target: linux
|
||||
class: standard
|
||||
type: Standard_D2ads_v6
|
||||
market: spot
|
||||
type: Standard_D4ads_v6
|
||||
market: on-demand
|
||||
idleTimeout: 90m
|
||||
hydrate:
|
||||
actions: true
|
||||
@@ -95,8 +97,8 @@ jobs:
|
||||
provider: azure
|
||||
target: linux
|
||||
class: standard
|
||||
type: Standard_D2ads_v6
|
||||
market: spot
|
||||
type: Standard_D4ads_v6
|
||||
market: on-demand
|
||||
idleTimeout: 90m
|
||||
hydrate:
|
||||
actions: true
|
||||
@@ -105,7 +107,18 @@ jobs:
|
||||
workflow: .github/workflows/crabbox-hydrate.yml
|
||||
job: hydrate
|
||||
ref: main
|
||||
command: env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 CI=1 corepack pnpm check:changed
|
||||
shell: true
|
||||
command: |
|
||||
set -euo pipefail
|
||||
if ! git status --short >/dev/null 2>&1; then
|
||||
rm -rf .git
|
||||
git init -q
|
||||
git add -A
|
||||
if ! git diff --cached --quiet; then
|
||||
git -c user.name=OpenClaw -c user.email=ci@openclaw.local commit -q --no-gpg-sign -m remote-check-tree
|
||||
fi
|
||||
fi
|
||||
env CI=1 corepack pnpm check --timed
|
||||
stop: always
|
||||
testbox-changed:
|
||||
provider: blacksmith-testbox
|
||||
|
||||
@@ -57,7 +57,7 @@ Docs: https://docs.openclaw.ai
|
||||
- Docs/CI: run Mintlify anchor checks through the repo pnpm runner so docs link validation works when pnpm is only available through the hydrated package-manager shim.
|
||||
- Agents: keep configured fallback model metadata typed so provider params, context-token caps, and media input limits do not break changed-gate typechecks.
|
||||
- Agents: accept hidden `sessions_send` body aliases before validation while keeping the model-facing `message` schema canonical. (#88229) Thanks @zhangguiping-xydt.
|
||||
- CI/Crabbox: keep default runner capacity spot-only and provider-neutral so OpenClaw remote validation does not silently fall back to on-demand leases or stale AWS region hints.
|
||||
- CI/Crabbox: keep default runner capacity on the Azure credit-backed on-demand D4 lane with the Azure SSH port and a Git-independent full check job, so broad validation avoids low-priority spot quota stalls, hydrate port mismatches, non-Git hydrated workspaces, and stale AWS region hints.
|
||||
- CI/Crabbox: route Crabbox wrapper and Testbox workflow edits to their regression tests so changed-test gates do not silently run zero specs.
|
||||
- CI/workflows: route workflow sanity helper edits to their guard tests and cover composite-action input interpolation checks.
|
||||
- CI/tooling: route CI scope, dependency, changelog, and docs helper edits to their owner tests instead of silently skipping changed-test coverage.
|
||||
|
||||
@@ -222,7 +222,7 @@ describe("package acceptance workflow", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("keeps default Crabbox capacity fail-closed and provider-neutral", () => {
|
||||
it("keeps default Crabbox capacity on the Azure credit-backed lane", () => {
|
||||
const crabboxConfig = parse(readFileSync(CRABBOX_CONFIG, "utf8")) as {
|
||||
aws?: { region?: string };
|
||||
capacity?: {
|
||||
@@ -231,15 +231,35 @@ describe("package acceptance workflow", () => {
|
||||
market?: string;
|
||||
regions?: string[];
|
||||
};
|
||||
jobs?: {
|
||||
changed?: { command?: string; market?: string; shell?: boolean; type?: string };
|
||||
prewarm?: { market?: string; type?: string };
|
||||
};
|
||||
provider?: string;
|
||||
ssh?: { port?: string; user?: string };
|
||||
};
|
||||
|
||||
expect(crabboxConfig.provider).toBe("azure");
|
||||
expect(crabboxConfig.capacity?.market).toBe("spot");
|
||||
expect(crabboxConfig.capacity?.fallback).toBe("spot-only");
|
||||
expect(crabboxConfig.capacity?.market).toBe("on-demand");
|
||||
expect(crabboxConfig.capacity?.fallback).toBeUndefined();
|
||||
expect(crabboxConfig.capacity?.regions).toBeUndefined();
|
||||
expect(crabboxConfig.capacity?.availabilityZones).toBeUndefined();
|
||||
expect(crabboxConfig.aws?.region).toBe("eu-west-1");
|
||||
expect(crabboxConfig.jobs?.prewarm?.market).toBe("on-demand");
|
||||
expect(crabboxConfig.jobs?.prewarm?.type).toBe("Standard_D4ads_v6");
|
||||
expect(crabboxConfig.jobs?.changed?.market).toBe("on-demand");
|
||||
expect(crabboxConfig.jobs?.changed?.type).toBe("Standard_D4ads_v6");
|
||||
expect(crabboxConfig.jobs?.changed?.shell).toBe(true);
|
||||
expect(crabboxConfig.jobs?.changed?.command).toContain("set -euo pipefail");
|
||||
expect(crabboxConfig.jobs?.changed?.command).toContain("git init -q");
|
||||
expect(crabboxConfig.jobs?.changed?.command).toContain(
|
||||
"commit -q --no-gpg-sign -m remote-check-tree",
|
||||
);
|
||||
expect(crabboxConfig.jobs?.changed?.command).toContain(
|
||||
"env CI=1 corepack pnpm check --timed",
|
||||
);
|
||||
expect(crabboxConfig.ssh?.user).toBe("crabbox");
|
||||
expect(crabboxConfig.ssh?.port).toBe("22");
|
||||
});
|
||||
|
||||
it("resolves candidate package sources before reusing Docker E2E lanes", () => {
|
||||
|
||||
Reference in New Issue
Block a user