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_copywith local runs. - Use
--dry-run=truewhile developing deploy metadata. - Use provider-off settings first.
- Use forced targets to shorten feedback loops.
Next: Adapt To Your Project.