vis ci
Run affected targets in a CI-optimized pipeline
vis ci
Bundles the CI lifecycle into a single command: install dependencies, detect affected projects, and run targets — with base/head refs auto-detected from CI provider environment variables.
Subcommand:
vis ci ignore <project>— the "Ignored Build Step" gate for Vercel/Netlify that decides whether a deploy should run based on affected status.
Usage
vis ci <targets> [options]Targets are comma-separated:
vis ci lint,test,buildExamples
vis ci lint,test,build # Full CI pipeline
vis ci test --base=origin/main # Override base ref
vis ci build --no-install # Skip install (deps already present)
vis ci build --parallel=6 # Increase concurrency
vis ci test --query "language=typescript" # Filter by project metadataHow It Works
- Install — Runs
vis install --frozen-lockfile(skip with--no-install) - Affected — For each target, runs
vis affected <target>with the detected base/head refs - Refs — Auto-detects from GitHub Actions (
GITHUB_BASE_REF), GitLab CI (CI_MERGE_REQUEST_TARGET_BRANCH_NAME), Buildkite (BUILDKITE_PULL_REQUEST_BASE_BRANCH/BUILDKITE_COMMIT), or CircleCI. Falls back toorigin/main
Options
| Option | Default | Description |
|---|---|---|
--install | true | Install deps first (--no-install to skip) |
--skip-toolchain | false | Skip the toolchain pre-flight (no auto-install for any pinned tool: node/pnpm/yarn/npm/bun/deno/go/python/ruby/rust) |
--base | auto-detected | Git base ref for affected detection |
--head | HEAD | Git head ref |
--upstream | none | Upstream scope: none, direct, deep |
--downstream | deep | Downstream scope: none, direct, deep |
--parallel | 4 | Max parallel tasks per target |
--partition | Partition for distributed CI (e.g. 1/4) | |
--query | Filter affected projects by query |