mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 17:00:50 +00:00
ci: time-box package acceptance legacy compat
This commit is contained in:
14
docs/ci.md
14
docs/ci.md
@@ -95,6 +95,20 @@ Cross-OS release checks still cover OS-specific onboarding, installer, and
|
||||
platform behavior; package/update product validation should start with Package
|
||||
Acceptance.
|
||||
|
||||
Package Acceptance has a bounded legacy-compatibility window for already
|
||||
published packages through `2026.4.25`, including `2026.4.25-beta.*`. Those
|
||||
allowances are documented here so they do not become permanent silent skips:
|
||||
known private QA entries in `dist/postinstall-inventory.json` may warn when the
|
||||
tarball omitted those files; `doctor-switch` may skip the
|
||||
`gateway install --wrapper` persistence subcase when the package does not expose
|
||||
that flag; `update-channel-switch` may prune missing `pnpm.patchedDependencies`
|
||||
from the tarball-derived fake git fixture and may log missing persisted
|
||||
`update.channel`; plugin smokes may read legacy install-record locations or
|
||||
accept missing marketplace install-record persistence; and `plugin-update` may
|
||||
allow config metadata migration while still requiring the install record and
|
||||
no-reinstall behavior to stay unchanged. Packages after `2026.4.25` must satisfy
|
||||
the modern contracts; the same conditions fail instead of warn or skip.
|
||||
|
||||
Examples:
|
||||
|
||||
```bash
|
||||
|
||||
@@ -657,6 +657,7 @@ These Docker runners split into two buckets:
|
||||
explicitly want the larger exhaustive scan.
|
||||
- `test:docker:all` builds the live Docker image once via `test:docker:live-build`, packs OpenClaw once as an npm tarball through `scripts/package-openclaw-for-docker.mjs`, then builds/reuses two `scripts/e2e/Dockerfile` images. The bare image is only the Node/Git runner for install/update/plugin-dependency lanes; those lanes mount the prebuilt tarball. The functional image installs the same tarball into `/app` for built-app functionality lanes. Docker lane definitions live in `scripts/lib/docker-e2e-scenarios.mjs`; planner logic lives in `scripts/lib/docker-e2e-plan.mjs`; `scripts/test-docker-all.mjs` executes the selected plan. The aggregate uses a weighted local scheduler: `OPENCLAW_DOCKER_ALL_PARALLELISM` controls process slots, while resource caps keep heavy live, npm-install, and multi-service lanes from all starting at once. If a single lane is heavier than the active caps, the scheduler can still start it when the pool is empty and then keeps it running alone until capacity is available again. Defaults are 10 slots, `OPENCLAW_DOCKER_ALL_LIVE_LIMIT=9`, `OPENCLAW_DOCKER_ALL_NPM_LIMIT=10`, and `OPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7`; tune `OPENCLAW_DOCKER_ALL_WEIGHT_LIMIT` or `OPENCLAW_DOCKER_ALL_DOCKER_LIMIT` only when the Docker host has more headroom. The runner performs a Docker preflight by default, removes stale OpenClaw E2E containers, prints status every 30 seconds, stores successful lane timings in `.artifacts/docker-tests/lane-timings.json`, and uses those timings to start longer lanes first on later runs. Use `OPENCLAW_DOCKER_ALL_DRY_RUN=1` to print the weighted lane manifest without building or running Docker, or `node scripts/test-docker-all.mjs --plan-json` to print the CI plan for selected lanes, package/image needs, and credentials.
|
||||
- `Package Acceptance` is the GitHub-native package gate for "does this installable tarball work as a product?" It resolves one candidate package from `source=npm`, `source=ref`, `source=url`, or `source=artifact`, uploads it as `package-under-test`, then runs the reusable Docker E2E lanes against that exact tarball instead of repacking the selected ref. `workflow_ref` selects the trusted workflow/harness scripts, while `package_ref` selects the source commit/branch/tag to pack when `source=ref`; this lets current acceptance logic validate older trusted commits. Profiles are ordered by breadth: `smoke` is quick install/channel/agent plus gateway/config, `package` is the package/update/plugin contract and the default native replacement for most Parallels package/update coverage, `product` adds MCP channels, cron/subagent cleanup, OpenAI web search, and OpenWebUI, and `full` runs the release-path Docker chunks with OpenWebUI. Release validation runs the `package` profile for the target ref with Telegram package QA enabled. Targeted GitHub Docker rerun commands generated from artifacts include prior package artifact and prepared image inputs when available, so failed lanes can avoid rebuilding the package and images.
|
||||
- Package Acceptance legacy compatibility is capped at `2026.4.25` (`2026.4.25-beta.*` included). Through that cutoff, the harness tolerates only shipped-package metadata gaps: omitted private QA inventory entries, missing `gateway install --wrapper`, missing patch files in the tarball-derived git fixture, missing persisted `update.channel`, legacy plugin install-record locations, missing marketplace install-record persistence, and config metadata migration during `plugins update`. For packages after `2026.4.25`, those paths are strict failures.
|
||||
- Container smoke runners: `test:docker:openwebui`, `test:docker:onboard`, `test:docker:npm-onboard-channel-agent`, `test:docker:update-channel-switch`, `test:docker:session-runtime-context`, `test:docker:agents-delete-shared-workspace`, `test:docker:gateway-network`, `test:docker:browser-cdp-snapshot`, `test:docker:mcp-channels`, `test:docker:pi-bundle-mcp-tools`, `test:docker:cron-mcp-cleanup`, `test:docker:plugins`, `test:docker:plugin-update`, and `test:docker:config-reload` boot one or more real containers and verify higher-level integration paths.
|
||||
|
||||
The live-model Docker runners also bind-mount only the needed CLI auth homes (or all supported ones when the run is not narrowed), then copy them into the container home before the run so external-CLI OAuth can refresh tokens without mutating the host auth store:
|
||||
|
||||
@@ -379,6 +379,15 @@ release checks still matter for OS-specific onboarding, installer, and platform
|
||||
behavior, but package/update product validation should prefer Package
|
||||
Acceptance.
|
||||
|
||||
Legacy package-acceptance leniency is intentionally time boxed. Packages through
|
||||
`2026.4.25` may use the compatibility path for metadata gaps already published
|
||||
to npm: private QA inventory entries missing from the tarball, missing
|
||||
`gateway install --wrapper`, missing patch files in the tarball-derived git
|
||||
fixture, missing persisted `update.channel`, legacy plugin install-record
|
||||
locations, missing marketplace install-record persistence, and config metadata
|
||||
migration during `plugins update`. Packages after `2026.4.25` must satisfy the
|
||||
modern package contracts; those same gaps fail release validation.
|
||||
|
||||
Use broader Package Acceptance profiles when the release question is about an
|
||||
actual installable package:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user