Skip to main content

Local Dry Runs

CI should usually use Git source mode. Local development often needs a different path because your latest changes may not be pushed yet. For that, pass the working tree with --repo=. and use source-mode=local_copy.

Workflow Dry Run

Run the full workflow without publishing provider artifacts or deploying:

dagger -m github.com/BootstrapLaboratory/rush-delivery@v0.3.4 call workflow \
--repo=. \
--git-sha="$(git rev-parse HEAD)" \
--event-name=manual \
--force-targets-json='[]' \
--environment=prod \
--dry-run=true \
--toolchain-image-provider=off \
--rush-cache-provider=off \
--source-mode=local_copy

Provider-off local runs are slower than provider-backed CI, but they are simple and safe. They do not need GHCR permissions.

Targeted Dry Run

To exercise one target, force it:

dagger -m github.com/BootstrapLaboratory/rush-delivery@v0.3.4 call workflow \
--repo=. \
--git-sha="$(git rev-parse HEAD)" \
--event-name=manual \
--force-targets-json='["server"]' \
--environment=prod \
--dry-run=true \
--source-mode=local_copy

Dry-run defaults from deploy target metadata supply harmless values for missing runtime env.

Local PR-Style Validation

To validate local changes against your main branch:

dagger -m github.com/BootstrapLaboratory/rush-delivery@v0.3.4 call validate \
--repo=. \
--event-name=pull_request \
--pr-base-sha="$(git merge-base HEAD origin/main)" \
--source-mode=local_copy

This is useful before opening a PR or when debugging validation target metadata.

When To Use Provider-Backed Local Runs

Provider-backed local runs are possible, but they need the same env values as CI. Start with provider-off dry-runs unless you are specifically debugging provider metadata, GHCR access, or cache behavior.

Checklist

  • Use --repo=. for unpushed changes.
  • Use --source-mode=local_copy with local runs.
  • Use --dry-run=true while developing deploy metadata.
  • Use provider-off settings first.
  • Use forced targets to shorten feedback loops.

Next: Adapt To Your Project.