Tangled-compatible personal CI server based on Nix
ci docs environment.md
2.6 kB · 51 lines
Markdown
at main

Action environment #

Every action gets the engine's own environment, without any CI_* or TANGLED_* variables left over from an enclosing run, then the workflow's environment:, then the variables below. They are the same locally and on the runner. See DESIGN.md §9 for the full contract.

CI_* #

Variable Contents
CI true
CI_RUN_ID The run's id
CI_RUN_DIR The run's directory
CI_WORKFLOW Workflow name
CI_ACTION This action's name
CI_ATTEMPT How many actions this run has executed, counting this one
CI_RESULT Where this action writes its result
CI_STATE A directory shared by every action of the run, and by manual child runs of it. outputs.json in it holds the merged outputs of results
CI_ARTIFACTS Where attachments go
CI_INPUTS A JSON file: the inputs of the option that routed here ({} if none)
CI_ANSWER For an action with input: a private file with the text typed at the gate. Removed when the action ends
CI_TRIGGER_RESULT The result file that routed here, if any, so a rollback can read what the health check found
CI_PARENT_RUN For a manual child run: the run it belongs to
CI_ROOT The main checkout
CI_SHA, CI_REF, CI_REPO The commit, ref and repo name being run
CI_HOST local or runner. Informational; recipes shouldn't branch on it

Each repos: entry with env: also sets that variable to its checkout's path.

Keep anything that must outlive an action in $CI_STATE or $CI_ARTIFACTS: on the runner each action has a private /tmp, and a run that waits at a gate continues in a new process.

TANGLED_* #

The variables Tangled's spindle sets, so a recipe can read the same names under either: TANGLED_SHA, TANGLED_COMMIT_SHA, TANGLED_REF, TANGLED_REF_NAME, TANGLED_REF_TYPE (branch or tag), TANGLED_PIPELINE_ID, TANGLED_PIPELINE_KIND, TANGLED_REPO_NAME, TANGLED_REPO_DID, TANGLED_REPO_KNOT and TANGLED_REPO_DEFAULT_BRANCH. Some are empty on a local run.

Variables the engine reads #

Variable Meaning
CI_RUNS_DIR Where local runs live. Default $XDG_STATE_HOME/ci/runs or ~/.local/state/ci/runs
CI_CACHE_DIR Mirrors of extra repos. Default $XDG_CACHE_HOME/ci or ~/.cache/ci
CI_CLONE_URL Clone URL for repos: names, with {repo}: git@host:{repo}
CI_APPVIEW_URL, CI_TOKEN The appview and an agent token, for reporting local runs, taking the runner's locks, ci trigger and ci wait