OpenClaw EnterpriseDOCSGitHub

Configure CI

Human verified

A human reviewed this page, but it may be out of date. Later edits may not have been reviewed.

Set Actions variables/secrets under Settings → Secrets and variables → Actions or the named Settings → Environments entry. Keep provider credentials in their environments. GitHub supplies workflow/cache tokens automatically. Manual dispatch inputs are per-run values; use the owning check page for commands.

Shared settings

Native image checks use the release build settings.

Ordinary CI, First Agent Smoke, and Observability Demo need no provider secrets. Runner labels, tool pins, triggers, timeouts, and job permissions are set in the workflow files; test lane definitions list required inputs.

Environments

Full Integration runs on main when a scheduled tick passes admission, or when the dispatcher approves a manual run through integration-main-approval. The approval environment has no secrets or variables. Set its sole required reviewer to @openclaw/maintainers-oce, allow self-review, and disable administrator bypass. Both environments must have exactly one custom deployment rule for branch main. Keep integration-main free of required reviewers so admitted scheduled runs do not wait for approval.

After a manual approval, preflight reads the environment policy and the run's review history with the workflow token. The approved review must name the exact approval environment and match the dispatcher's user ID and triggering login. Missing, rejected, conflicting, or unverifiable reviews fail before integration-main jobs start. Repository write access alone does not authorize a manual dispatch.

To retry a scheduled or manual run, start a new approved manual dispatch on main. Each credentialed job checks the event and attempt before reading credentials. Preflight rejects extra branches, tags, incomplete policy metadata, and a missing or enabled bypass flag.

The separate integration-qa-pr environment permits main and refs/pull/*/merge. Its fixed coverage labels select full QA, Compose OpenShell, Keycloak installation, or OpenClaw model/browser advisory runs. Keep its two secret values separate from integration-main. Full Integration preflight does not govern this environment.

Full Integration rejects tags and all branch dispatches outside main. Check the source commit before dispatch and confirm the run's headSha matches it.

dev-up-k3d and skipper-prepared-git-installed need no credential environment, but manual runs still require main and the dispatcher's team approval. The Skipper job uses synthetic, job-local model and Git credentials for the installed private Git fixture and a GitHub Actions cache token to build images. helper-timeout and standalone logging-collector also need no environment, but both require main.

The table distinguishes secret names from variable names. The common runtime image variables are optional OCC_TEST_KUBERNETES_GATEWAY_IMAGE and OCC_TEST_KUBERNETES_AGENT_IMAGE; unset values use preparation's builds/defaults. CONTAINER_NODE_BASE_IMAGE remains a shared repository setting.

GitHub environment Used by Secrets Variables
integration-main Full Integration: Docker Model Runtime, k3d Model Runtime, Production TUI OPENAI_API_KEY OCC_TEST_OPENAI_MODEL, NODE_BASE_IMAGE; Docker: OCC_DOCKER_RUNTIME_IMAGE; k3d: common runtime images; TUI: OCC_TEST_PRODUCTION_CONTROLLER_IMAGE, OCC_TEST_KUBERNETES_RUNTIME_IMAGE, OCC_TEST_PRODUCTION_POSTGRES_IMAGE, OCC_TEST_PRODUCTION_NODE_IMAGE.
integration-main Full Integration: Gateway Routing OPENAI_API_KEY OCC_TEST_OPENAI_MODEL, common runtime images.
integration-main Full Integration: k3d OTEL OPENAI_API_KEY OCC_TEST_OPENAI_MODEL, NODE_BASE_IMAGE, common runtime images.
integration-main Full Integration: Slack Live OPENAI_API_KEY, SLACK_APP_TOKEN, SLACK_BOT_TOKEN, SLACK_SENDER_TOKEN OCC_TEST_OPENAI_MODEL, common runtime images, OCC_TEST_QA_SLACK_CHANNEL_ID.
integration-main Full Integration: OpenShell OPENAI_API_KEY, CODEX_ACCESS_TOKEN OCC_TEST_OPENAI_MODEL, common runtime images, OCC_TEST_OPENSHELL_GATEWAY_IMAGE, OCC_TEST_OPENSHELL_SANDBOX_IMAGE, OCC_TEST_OPENSHELL_SUPERVISOR_IMAGE, OCC_TEST_OPENSHELL_SECRET_PROJECTION (default 1).
integration-qa-pr QA Matrix Advisory: QA advisory (compose), QA advisory (kubernetes), QA advisory (OpenShell) CODEX_ACCESS_TOKEN, OPENAI_API_KEY OCC_TEST_QA_CODEX_MODEL and OCC_TEST_OPENAI_MODEL. Code on main and selected trusted PRs receives these credentials.
integration-main Full Integration: Shipped Installation QA Matrix OPENAI_API_KEY, CODEX_ACCESS_TOKEN OCC_TEST_QA_OPENAI_MODEL, OCC_TEST_QA_CODEX_MODEL.

NODE_BASE_IMAGE is a separate variable consumed by selected Full Integration jobs; it is not an alias for CONTAINER_NODE_BASE_IMAGE. Model/image requirements and defaults differ by lane: follow its linked suite guide. Missing required inputs fail selected lanes.

OpenShell image overrides must retain the pinned release digest, or use the complete candidate image and chart selection during local preparation. Hosted jobs do not acquire candidate source checkouts or charts from image variables alone.

QA model overrides default to gpt-6-luna.

For hosted QA scenario exclusions, see Full Integration.

Every integration-main job can reference its combined secret set. Workflow steps pass only their selected inputs to tests. Preserve the old environments until credential migration and hosted verification are complete.

Runner overrides

For lanes that accept optional Kubernetes runtime images, set both OCC_TEST_KUBERNETES_GATEWAY_IMAGE and OCC_TEST_KUBERNETES_AGENT_IMAGE to immutable references, or omit both to build from source. Supplying only one fails preparation before state or resources are created. Preparation also selects the verified Gateway image in the host container engine for OCC_DOCKER_RUNTIME_IMAGE, used by the loopback Gateway relay. Kubernetes selectors use the separately verified references imported into the cluster.

Before a cold local source build, check for an exact-source retained CI runtime. This discovers candidate artifacts; it does not import or qualify them.

These process environment variables are optional. First Agent Smoke has its own directories and slot settings.

Setting Default Purpose
CI_RUNNER_TEST_TIMEOUT_MS 3600000 Per-file test deadline; hosted lane/job deadlines still apply.
CI_RUNNER_CLEANUP_TIMEOUT_MS 120000 Per-file cleanup allowance.
CI_RUNNER_FILE_CONCURRENCY Lane limit capped by available CPUs 1–32 for lanes permitting parallel files; serial-only lanes stay serial.
OPENCLAW_CI_CLEANUP_COMMAND_TIMEOUT_MS 300000 Container-engine/k3d cleanup command limit; database drops use at most 60 seconds.
OPENCLAW_CI_COMMAND_KILL_GRACE_MS 5000 TERM-to-KILL and pipe-drain grace during preparation/cleanup.
OPENCLAW_CI_K3S_IMAGE Immutable pin in scripts/ci/prepare.mjs Approved digest-pinned Kubernetes 1.35.x image; OpenShell has a separate pin.
OPENCLAW_CI_IMAGE_CACHE_EXPORT_TIMEOUT_MS 1200000 Maximum time for a hosted BuildKit cache export.
OPENCLAW_CI_BROWSER_FAILURE_DIR Unset Retain browser failure evidence locally.
OPENCLAW_CI_BROWSER_FAILURE_TRACE Unset Set 1 to include Playwright traces.

Cleanup timeout/grace overrides that are not positive numbers use defaults. Deadlines include pipe drain; a wait timeout does not prove deletion. Preparation verifies imported image references on every node and fails on import timeout.

Search documentation