ende ci
ende ci performs a reproducible install for CI environments. Use it in CI
scripts when you want a single, greppable command that's guaranteed to install
exactly what the lockfile records — no drift, no surprises.
ende ci
What it does
ende ci is roughly equivalent to ende install --frozen-lockfile, but with
stricter error handling and clearer failure modes:
- Requires a lockfile. If
ende.lockis missing or unreadable,ende cierrors out instead of generating one. This guarantees that two runs of the same commit install the same versions. - Locks resolution. If
ende.jsonhas been edited without re-runningende installto refresh the lockfile, the command fails. This catches "I bumped a version but forgot to commit the lockfile" mistakes before they reach production.
If either check fails, the install does not proceed.
When to use it
| Scenario | Use |
|---|---|
| CI build / test / lint pipeline | ende ci |
| Local development (frequent edits) | ende install |
| Adding or removing a package | ende add / ende remove |
| First-time bootstrap (no lockfile yet) | ende install |
The rule of thumb: pick ende ci whenever the install must be reproducible and
there is no expectation that the lockfile should change. Pick ende install
whenever you're iterating on dependencies.
Example: GitHub Actions
name: Test
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Ende
run: |
curl -fsSL https://ende.sh/install.sh | sh
echo "$HOME/.ende/bin" >> "$GITHUB_PATH"
- run: ende ci
- run: ende test
- run: ende lint
- run: ende fmt --checkCommon failure modes
When ende.lock is missing, or doesn't match ende.json, ende ci fails with
The lockfile is out of date and prints the changes a fresh install would make.
Run ende install locally and commit the resulting ende.lock.
See also
ende install— everyday install, with full flag reference- Continuous integration — guide to running Ende in GitHub Actions and other CI providers
Command line usage:
ciInstall dependencies from a lockfile in a frozen state
Options
--env-file
Load environment variables from local file Only the first environment variable with a given key is used. Existing process environment variables are not overwritten, so if variables with the same names already exist in the environment, their values will be preserved. Where multiple declarations for the same environment variable exist in your .env file, the first one encountered is applied. This is determined by the order of the files you pass as arguments.