Closes a stack of env-pipeline regressions left over from the recent
INFINITO_* namespace refactor by:
* DOMAIN_PRIMARY now reads INFINITO_DOMAIN strictly (was: legacy DOMAIN
env var → defaulted to infinito.localhost, which never resolved
because CoreDNS serves the INFINITO_DOMAIN value, infinito.example).
* group_vars/all/08_networks.yml IPs (ip4/ip6/dns) now read
INFINITO_IP4 / INFINITO_IP6 / INFINITO_DNS_IP.
* PLAYWRIGHT_KEEP_ALL renamed to INFINITO_PLAYWRIGHT_KEEP end-to-end
(env-builder, role default, run_one.yml docker exec, playwright.config.js,
lint allowlist, docs anchor, CI workflow vars).
* PKGMGR_IMAGE renamed to INFINITO_PARENT_IMAGE; Dockerfile ARG drops
the inline default so env/default.env is the only SPOT.
* INFINITO_SRC_DIR centralized: Dockerfile ARG (no default) + ENV;
compose forwards it as build-arg, volume mount path, and container env;
every Python CLI + shell helper + CI workflow now reads it strictly
(os.environ[...] / "${INFINITO_SRC_DIR:?...}") instead of the literal
/opt/src/infinito.
* New entries in env/default.env: INFINITO_IP6=::1, INFINITO_PARENT_IMAGE,
INFINITO_PLAYWRIGHT_KEEP=false. All three propagated through
utils/env/handlers/passthrough.STATIC_KEYS and (where consumed in the
container) through compose.yml's environment block.
Validated end-to-end with `make test` (2360 tests across lint, lint-*,
test-lint, test-external, test-unit, test-integration).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7.4 KiB
CI Configuration ⚙️
This page lists every repository variable that controls GitHub Actions CI behaviour in this repo. For the workflow catalog see workflows.md; for the CI flow see pipeline.md.
Repository variables are set under Settings → Secrets and variables → Actions → Variables.
Variables 📋
| Variable | Workflow | Default (unset) | Set to activate |
|---|---|---|---|
CI_CANCEL_IN_PROGRESS |
entry-push-latest.yml | Cancels in-progress runs on new push | false to keep in-progress runs alive |
CI_RUN_ON_MAIN |
entry-push-latest.yml | Pushes to main skip CI |
true to run CI on main pushes too |
CI_ENABLE_AUTO_UPDATES |
update.yml, dependabot-close.yml | Update jobs skipped; Dependabot PRs auto-closed | true to allow update PRs (workflow-driven and Dependabot) |
INFINITO_PLAYWRIGHT_KEEP |
test-deploy-server.yml, test-deploy-universal.yml, test-deploy-workstation.yml, test-deploy-local.yml | Playwright keeps trace, screenshot and video only when a test fails | true to keep them for every test (passing runs included) |
CI_CANCEL_IN_PROGRESS 🛑
Controls whether a new push cancels an already-running CI pipeline on the same branch.
Default behaviour (variable not set or set to any value other than false):
In-progress runs are cancelled when a new push arrives. This is the recommended setting for most workflows.
To disable cancellation:
- Open the repository on GitHub.
- Go to Settings → Secrets and variables → Actions.
- Switch to the Variables tab.
- Click New repository variable.
- Set Name to
CI_CANCEL_IN_PROGRESSand Value tofalse. - Save.
To re-enable cancellation:
Delete the variable or change its value to anything other than false (e.g. true).
How it works:
cancel-in-progress: ${{ vars.CI_CANCEL_IN_PROGRESS != 'false' }}
| Variable value | Expression result | Behaviour |
|---|---|---|
| (not set / empty) | '' != 'false' → true |
Cancels in-progress runs ✓ |
false |
'false' != 'false' → false |
Does not cancel ✓ |
true |
'true' != 'false' → true |
Cancels in-progress runs ✓ |
CI_RUN_ON_MAIN 🎯
Controls whether pushes to main trigger the CI pipeline. Pushes to all other branches covered by the workflow (feature/**, hotfix/**, fix/**, alert-autofix-*) are unaffected.
Default behaviour (variable not set or set to any value other than true):
Pushes to main are gated out at the run-policy job and CI is skipped.
To enable CI on main pushes:
- Open the repository on GitHub.
- Go to Settings → Secrets and variables → Actions.
- Switch to the Variables tab.
- Click New repository variable.
- Set Name to
CI_RUN_ON_MAINand Value totrue. - Save.
To disable again:
Delete the variable or change its value to anything other than true.
How it works:
The gate is applied inside push_ci_policy.sh, which the run-policy job invokes. When GITHUB_REF == refs/heads/main and CI_RUN_ON_MAIN != 'true', the job emits should_run=false and every downstream job is skipped.
| Variable value | Ref is main |
Behaviour |
|---|---|---|
| (not set / empty) | yes | CI skipped ✓ |
true |
yes | CI runs ✓ |
| any other value | yes | CI skipped ✓ |
| (any) | no | Unaffected (CI runs per branch rules) ✓ |
CI_ENABLE_AUTO_UPDATES 🔄
Controls whether automated update PRs are created. Covers both the workflow-driven jobs in update.yml (Docker image versions, agent skills) and PRs opened by Dependabot (gated via dependabot-close.yml, which auto-closes them).
The workflow-driven jobs additionally require the BOT_APP_ID and BOT_APP_PRIVATE_KEY repository secrets, see secrets.md. Without those secrets, runs fail at the token-minting step and no PR is opened.
Default behaviour (variable not set or set to any value other than true):
The update-docker-image-versions and update-skills jobs are skipped. Dependabot PRs are auto-closed on open with a comment pointing to this variable.
To enable update PRs:
- Open the repository on GitHub.
- Go to Settings → Secrets and variables → Actions.
- Switch to the Variables tab.
- Click New repository variable.
- Set Name to
CI_ENABLE_AUTO_UPDATESand Value totrue. - Save.
To disable again:
Delete the variable or change its value to anything other than true.
How it works:
In update.yml each job carries a job-level guard:
if: vars.CI_ENABLE_AUTO_UPDATES == 'true'
Dependabot cannot read repository variables itself, so dependabot-close.yml listens on pull_request_target (opened, reopened) and closes any PR authored by dependabot[bot] while CI_ENABLE_AUTO_UPDATES != 'true'. The workflow does not check out PR code, which keeps the elevated pull_request_target context safe.
| Variable value | Workflow update jobs | Dependabot PRs |
|---|---|---|
| (not set / empty) | Skipped ✓ | Auto-closed on open ✓ |
true |
Run ✓ | Stay open ✓ |
| any other value | Skipped ✓ | Auto-closed on open ✓ |
INFINITO_PLAYWRIGHT_KEEP 🎬
Controls whether Playwright keeps trace, screenshot, and video for every test or only for failing tests across the four deploy-test workflows (test-deploy-server.yml, test-deploy-universal.yml, test-deploy-workstation.yml, test-deploy-local.yml). For the full propagation chain, the inventory override, and the local equivalents, see Playwright Tests.
Default behaviour (variable not set or set to any value other than true):
Artefacts are retained only when a test fails.
To retain artefacts for every test:
- Open the repository on GitHub.
- Go to Settings → Secrets and variables → Actions.
- Switch to the Variables tab.
- Click New repository variable.
- Set Name to
INFINITO_PLAYWRIGHT_KEEPand Value totrue. - Save.
To disable again:
Delete the variable or change its value to anything other than true.
How it works:
Each deploy-test workflow forwards the variable into its own env: block:
INFINITO_PLAYWRIGHT_KEEP: ${{ vars.INFINITO_PLAYWRIGHT_KEEP }}
| Variable value | Behaviour |
|---|---|
| (not set / empty) | Trace / screenshot / video kept only on failure ✓ |
true |
Trace / screenshot / video kept for every test ✓ |
| any other value | Trace / screenshot / video kept only on failure ✓ |