rush-delivery
workflows. It owns the release path from source acquisition through detect,validate, build, package, package release, and deploy while keeping
project-specific behavior in metadata.
Installation
dagger install github.com/BootstrapLaboratory/rush-delivery@v0.7.0Entrypoint
Return Type
RushDelivery Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
func (m *MyModule) Example() *dagger.RushDelivery {
return dag.
RushDelivery()
}@function
def example() -> dagger.RushDelivery:
return (
dag.rush_delivery()
)@func()
example(): RushDelivery {
return dag
.rushDelivery()
}Types
RushDelivery 🔗
Repeatable release workflows for Rush monorepos.
ping() 🔗
Returns a simple marker proving the Dagger module is callable.
Return Type
String ! Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
pingfunc (m *MyModule) Example(ctx context.Context) string {
return dag.
RushDelivery().
Ping(ctx)
}@function
async def example() -> str:
return await (
dag.rush_delivery()
.ping()
)@func()
async example(): Promise<string> {
return dag
.rushDelivery()
.ping()
}selfCheck() 🔗
Runs the framework’s local typecheck and unit tests.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| moduleSource | Directory | - | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
self-checkfunc (m *MyModule) Example(ctx context.Context) string {
return dag.
RushDelivery().
SelfCheck(ctx)
}@function
async def example() -> str:
return await (
dag.rush_delivery()
.self_check()
)@func()
async example(): Promise<string> {
return dag
.rushDelivery()
.selfCheck()
}detect() 🔗
Computes the canonical CI plan JSON for detect/package/deploy handoff.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| repo | Directory ! | - | No description provided |
| eventName | String ! | "push" | No description provided |
| forceTargetsJson | String ! | "[]" | No description provided |
| prBaseSha | String ! | "" | No description provided |
| deployTagPrefix | String ! | "deploy/prod" | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
detect --repo DIR_PATH --event-name string --force-targets-json string --pr-base-sha string --deploy-tag-prefix stringfunc (m *MyModule) Example(ctx context.Context, repo *dagger.Directory, eventName string, forceTargetsJson string, prBaseSha string, deployTagPrefix string) string {
return dag.
RushDelivery().
Detect(ctx, repo, eventName, forceTargetsJson, prBaseSha, deployTagPrefix)
}@function
async def example(repo: dagger.Directory, event_name: str, force_targets_json: str, pr_base_sha: str, deploy_tag_prefix: str) -> str:
return await (
dag.rush_delivery()
.detect(repo, event_name, force_targets_json, pr_base_sha, deploy_tag_prefix)
)@func()
async example(repo: Directory, eventName: string, forceTargetsJson: string, prBaseSha: string, deployTagPrefix: string): Promise<string> {
return dag
.rushDelivery()
.detect(repo, eventName, forceTargetsJson, prBaseSha, deployTagPrefix)
}describeReleaseTargets() 🔗
Validates and normalizes a release target selection for future planning work.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| releaseTargetsJson | String ! | "[]" | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
describe-release-targets --release-targets-json stringfunc (m *MyModule) Example(ctx context.Context, releaseTargetsJson string) string {
return dag.
RushDelivery().
DescribeReleaseTargets(ctx, releaseTargetsJson)
}@function
async def example(release_targets_json: str) -> str:
return await (
dag.rush_delivery()
.describe_release_targets(release_targets_json)
)@func()
async example(releaseTargetsJson: string): Promise<string> {
return dag
.rushDelivery()
.describeReleaseTargets(releaseTargetsJson)
}buildDeployTargets() 🔗
Runs the generic Rush build stage for deploy targets selected by ci-plan.json.
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| repo | Directory ! | - | No description provided |
| ciPlanFile | File ! | - | No description provided |
| deployEnvFile | File | - | No description provided |
| dryRun | Boolean ! | false | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
build-deploy-targets --repo DIR_PATH --ci-plan-file file:path --dry-run booleanfunc (m *MyModule) Example(repo *dagger.Directory, ciPlanFile *dagger.File, dryRun bool) *dagger.Directory {
return dag.
RushDelivery().
BuildDeployTargets(repo, ciPlanFile, dryRun)
}@function
def example(repo: dagger.Directory, ci_plan_file: dagger.File, dry_run: bool) -> dagger.Directory:
return (
dag.rush_delivery()
.build_deploy_targets(repo, ci_plan_file, dry_run)
)@func()
example(repo: Directory, ciPlanFile: File, dryRun: boolean): Directory {
return dag
.rushDelivery()
.buildDeployTargets(repo, ciPlanFile, dryRun)
}packageDeployTargets() 🔗
Materializes deploy package artifacts for deploy targets selected by ci-plan.json.
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| repo | Directory ! | - | No description provided |
| ciPlanFile | File ! | - | No description provided |
| artifactPrefix | String ! | "deploy-target" | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
package-deploy-targets --repo DIR_PATH --ci-plan-file file:path --artifact-prefix stringfunc (m *MyModule) Example(repo *dagger.Directory, ciPlanFile *dagger.File, artifactPrefix string) *dagger.Directory {
return dag.
RushDelivery().
PackageDeployTargets(repo, ciPlanFile, artifactPrefix)
}@function
def example(repo: dagger.Directory, ci_plan_file: dagger.File, artifact_prefix: str) -> dagger.Directory:
return (
dag.rush_delivery()
.package_deploy_targets(repo, ci_plan_file, artifact_prefix)
)@func()
example(repo: Directory, ciPlanFile: File, artifactPrefix: string): Directory {
return dag
.rushDelivery()
.packageDeployTargets(repo, ciPlanFile, artifactPrefix)
}buildAndPackageDeployTargets() 🔗
Runs build and package as separate stages while exporting the final packaged workspace once.
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| repo | Directory ! | - | No description provided |
| ciPlanFile | File ! | - | No description provided |
| artifactPrefix | String ! | "deploy-target" | No description provided |
| deployEnvFile | File | - | No description provided |
| dryRun | Boolean ! | false | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
build-and-package-deploy-targets --repo DIR_PATH --ci-plan-file file:path --artifact-prefix string --dry-run booleanfunc (m *MyModule) Example(repo *dagger.Directory, ciPlanFile *dagger.File, artifactPrefix string, dryRun bool) *dagger.Directory {
return dag.
RushDelivery().
BuildAndPackageDeployTargets(repo, ciPlanFile, artifactPrefix, dryRun)
}@function
def example(repo: dagger.Directory, ci_plan_file: dagger.File, artifact_prefix: str, dry_run: bool) -> dagger.Directory:
return (
dag.rush_delivery()
.build_and_package_deploy_targets(repo, ci_plan_file, artifact_prefix, dry_run)
)@func()
example(repo: Directory, ciPlanFile: File, artifactPrefix: string, dryRun: boolean): Directory {
return dag
.rushDelivery()
.buildAndPackageDeployTargets(repo, ciPlanFile, artifactPrefix, dryRun)
}deployRelease() 🔗
Executes the release plan in wave order, applying generic target runtime handling in parallel within each wave.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| repo | Directory ! | - | No description provided |
| gitSha | String ! | - | No description provided |
| releaseTargetsJson | String ! | "[]" | No description provided |
| environment | String ! | "prod" | No description provided |
| dryRun | Boolean ! | true | No description provided |
| deployEnvFile | File | - | No description provided |
| packageManifestFile | File | - | No description provided |
| hostWorkspaceDir | String ! | "" | No description provided |
| toolchainImageProvider | String ! | "off" | No description provided |
| toolchainImagePolicy | String ! | "lazy" | No description provided |
| dockerSocket | Socket | - | No description provided |
| runtimeFiles | Directory | - | No description provided |
Example
echo 'Custom types are not supported in shell examples'func (m *MyModule) Example(ctx context.Context, repo *dagger.Directory, gitSha string, releaseTargetsJson string, environment string, dryRun bool, hostWorkspaceDir string, toolchainImageProvider string, toolchainImagePolicy string) string {
return dag.
RushDelivery().
DeployRelease(ctx, repo, gitSha, releaseTargetsJson, environment, dryRun, hostWorkspaceDir, toolchainImageProvider, toolchainImagePolicy)
}@function
async def example(repo: dagger.Directory, git_sha: str, release_targets_json: str, environment: str, dry_run: bool, host_workspace_dir: str, toolchain_image_provider: str, toolchain_image_policy: str) -> str:
return await (
dag.rush_delivery()
.deploy_release(repo, git_sha, release_targets_json, environment, dry_run, host_workspace_dir, toolchain_image_provider, toolchain_image_policy)
)@func()
async example(repo: Directory, gitSha: string, releaseTargetsJson: string, environment: string, dryRun: boolean, hostWorkspaceDir: string, toolchainImageProvider: string, toolchainImagePolicy: string): Promise<string> {
return dag
.rushDelivery()
.deployRelease(repo, gitSha, releaseTargetsJson, environment, dryRun, hostWorkspaceDir, toolchainImageProvider, toolchainImagePolicy)
}validateMetadataContract() 🔗
Validates cross-file Dagger metadata contracts before running release stages.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| repo | Directory ! | - | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
validate-metadata-contract --repo DIR_PATHfunc (m *MyModule) Example(ctx context.Context, repo *dagger.Directory) string {
return dag.
RushDelivery().
ValidateMetadataContract(ctx, repo)
}@function
async def example(repo: dagger.Directory) -> str:
return await (
dag.rush_delivery()
.validate_metadata_contract(repo)
)@func()
async example(repo: Directory): Promise<string> {
return dag
.rushDelivery()
.validateMetadataContract(repo)
}workflow() 🔗
Runs the deploy-oriented workflow as one Dagger composition: detect, build, package, then deploy.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| gitSha | String ! | - | No description provided |
| eventName | String ! | "push" | No description provided |
| forceTargetsJson | String ! | "[]" | No description provided |
| prBaseSha | String ! | "" | No description provided |
| deployTagPrefix | String ! | "deploy/prod" | No description provided |
| artifactPrefix | String ! | "deploy-target" | No description provided |
| environment | String ! | "prod" | No description provided |
| dryRun | Boolean ! | true | No description provided |
| workflowEnvFile | File | - | No description provided |
| deployEnvFile | File | - | No description provided |
| releaseEnvFile | File | - | No description provided |
| releaseTargetsJson | String ! | "[]" | No description provided |
| hostWorkspaceDir | String ! | "" | No description provided |
| toolchainImageProvider | String ! | "off" | No description provided |
| toolchainImagePolicy | String ! | "lazy" | No description provided |
| rushCacheProvider | String ! | "off" | No description provided |
| rushCachePolicy | String ! | "lazy" | No description provided |
| sourceMode | String ! | "local_copy" | No description provided |
| sourceRepositoryUrl | String ! | "" | No description provided |
| sourceRef | String ! | "" | No description provided |
| sourceAuthTokenEnv | String ! | "" | No description provided |
| sourceAuthUsername | String ! | "" | No description provided |
| dockerSocket | Socket | - | No description provided |
| repo | Directory | - | No description provided |
| runtimeFiles | Directory | - | No description provided |
Example
echo 'Custom types are not supported in shell examples'func (m *MyModule) Example(ctx context.Context, gitSha string, eventName string, forceTargetsJson string, prBaseSha string, deployTagPrefix string, artifactPrefix string, environment string, dryRun bool, releaseTargetsJson string, hostWorkspaceDir string, toolchainImageProvider string, toolchainImagePolicy string, rushCacheProvider string, rushCachePolicy string, sourceMode string, sourceRepositoryUrl string, sourceRef string, sourceAuthTokenEnv string, sourceAuthUsername string) string {
return dag.
RushDelivery().
Workflow(ctx, gitSha, eventName, forceTargetsJson, prBaseSha, deployTagPrefix, artifactPrefix, environment, dryRun, releaseTargetsJson, hostWorkspaceDir, toolchainImageProvider, toolchainImagePolicy, rushCacheProvider, rushCachePolicy, sourceMode, sourceRepositoryUrl, sourceRef, sourceAuthTokenEnv, sourceAuthUsername)
}@function
async def example(git_sha: str, event_name: str, force_targets_json: str, pr_base_sha: str, deploy_tag_prefix: str, artifact_prefix: str, environment: str, dry_run: bool, release_targets_json: str, host_workspace_dir: str, toolchain_image_provider: str, toolchain_image_policy: str, rush_cache_provider: str, rush_cache_policy: str, source_mode: str, source_repository_url: str, source_ref: str, source_auth_token_env: str, source_auth_username: str) -> str:
return await (
dag.rush_delivery()
.workflow(git_sha, event_name, force_targets_json, pr_base_sha, deploy_tag_prefix, artifact_prefix, environment, dry_run, release_targets_json, host_workspace_dir, toolchain_image_provider, toolchain_image_policy, rush_cache_provider, rush_cache_policy, source_mode, source_repository_url, source_ref, source_auth_token_env, source_auth_username)
)@func()
async example(gitSha: string, eventName: string, forceTargetsJson: string, prBaseSha: string, deployTagPrefix: string, artifactPrefix: string, environment: string, dryRun: boolean, releaseTargetsJson: string, hostWorkspaceDir: string, toolchainImageProvider: string, toolchainImagePolicy: string, rushCacheProvider: string, rushCachePolicy: string, sourceMode: string, sourceRepositoryUrl: string, sourceRef: string, sourceAuthTokenEnv: string, sourceAuthUsername: string): Promise<string> {
return dag
.rushDelivery()
.workflow(gitSha, eventName, forceTargetsJson, prBaseSha, deployTagPrefix, artifactPrefix, environment, dryRun, releaseTargetsJson, hostWorkspaceDir, toolchainImageProvider, toolchainImagePolicy, rushCacheProvider, rushCachePolicy, sourceMode, sourceRepositoryUrl, sourceRef, sourceAuthTokenEnv, sourceAuthUsername)
}validate() 🔗
Runs Dagger-owned pull-request validation for affected Rush projects.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| eventName | String ! | "pull_request" | No description provided |
| prBaseSha | String ! | "" | No description provided |
| validateTargetsJson | String ! | "[]" | No description provided |
| gitSha | String ! | "" | No description provided |
| deployEnvFile | File | - | No description provided |
| toolchainImageProvider | String ! | "off" | No description provided |
| toolchainImagePolicy | String ! | "pull-or-build" | No description provided |
| rushCacheProvider | String ! | "off" | No description provided |
| rushCachePolicy | String ! | "pull-or-build" | No description provided |
| sourceMode | String ! | "local_copy" | No description provided |
| sourceRepositoryUrl | String ! | "" | No description provided |
| sourceRef | String ! | "" | No description provided |
| sourceAuthTokenEnv | String ! | "" | No description provided |
| sourceAuthUsername | String ! | "" | No description provided |
| repo | Directory | - | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
validate --event-name string --pr-base-sha string --validate-targets-json string --git-sha string --toolchain-image-provider string --toolchain-image-policy string --rush-cache-provider string --rush-cache-policy string --source-mode string --source-repository-url string --source-ref string --source-auth-token-env string --source-auth-username stringfunc (m *MyModule) Example(ctx context.Context, eventName string, prBaseSha string, validateTargetsJson string, gitSha string, toolchainImageProvider string, toolchainImagePolicy string, rushCacheProvider string, rushCachePolicy string, sourceMode string, sourceRepositoryUrl string, sourceRef string, sourceAuthTokenEnv string, sourceAuthUsername string) string {
return dag.
RushDelivery().
Validate(ctx, eventName, prBaseSha, validateTargetsJson, gitSha, toolchainImageProvider, toolchainImagePolicy, rushCacheProvider, rushCachePolicy, sourceMode, sourceRepositoryUrl, sourceRef, sourceAuthTokenEnv, sourceAuthUsername)
}@function
async def example(event_name: str, pr_base_sha: str, validate_targets_json: str, git_sha: str, toolchain_image_provider: str, toolchain_image_policy: str, rush_cache_provider: str, rush_cache_policy: str, source_mode: str, source_repository_url: str, source_ref: str, source_auth_token_env: str, source_auth_username: str) -> str:
return await (
dag.rush_delivery()
.validate(event_name, pr_base_sha, validate_targets_json, git_sha, toolchain_image_provider, toolchain_image_policy, rush_cache_provider, rush_cache_policy, source_mode, source_repository_url, source_ref, source_auth_token_env, source_auth_username)
)@func()
async example(eventName: string, prBaseSha: string, validateTargetsJson: string, gitSha: string, toolchainImageProvider: string, toolchainImagePolicy: string, rushCacheProvider: string, rushCachePolicy: string, sourceMode: string, sourceRepositoryUrl: string, sourceRef: string, sourceAuthTokenEnv: string, sourceAuthUsername: string): Promise<string> {
return dag
.rushDelivery()
.validate(eventName, prBaseSha, validateTargetsJson, gitSha, toolchainImageProvider, toolchainImagePolicy, rushCacheProvider, rushCachePolicy, sourceMode, sourceRepositoryUrl, sourceRef, sourceAuthTokenEnv, sourceAuthUsername)
}releasePackages() 🔗
Runs the package release/versioning flow from release metadata.
Return Type
String !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| gitSha | String ! | "" | No description provided |
| dryRun | Boolean ! | true | No description provided |
| releaseEnvFile | File | - | No description provided |
| toolchainImageProvider | String ! | "off" | No description provided |
| toolchainImagePolicy | String ! | "lazy" | No description provided |
| rushCacheProvider | String ! | "off" | No description provided |
| rushCachePolicy | String ! | "lazy" | No description provided |
| sourceMode | String ! | "local_copy" | No description provided |
| sourceRepositoryUrl | String ! | "" | No description provided |
| sourceRef | String ! | "" | No description provided |
| sourceAuthTokenEnv | String ! | "" | No description provided |
| sourceAuthUsername | String ! | "" | No description provided |
| repo | Directory | - | No description provided |
Example
dagger -m github.com/BootstrapLaboratory/rush-delivery@8e48c1b30b66523c06001a9e3f2928bc0216756c call \
release-packages --git-sha string --dry-run boolean --toolchain-image-provider string --toolchain-image-policy string --rush-cache-provider string --rush-cache-policy string --source-mode string --source-repository-url string --source-ref string --source-auth-token-env string --source-auth-username stringfunc (m *MyModule) Example(ctx context.Context, gitSha string, dryRun bool, toolchainImageProvider string, toolchainImagePolicy string, rushCacheProvider string, rushCachePolicy string, sourceMode string, sourceRepositoryUrl string, sourceRef string, sourceAuthTokenEnv string, sourceAuthUsername string) string {
return dag.
RushDelivery().
ReleasePackages(ctx, gitSha, dryRun, toolchainImageProvider, toolchainImagePolicy, rushCacheProvider, rushCachePolicy, sourceMode, sourceRepositoryUrl, sourceRef, sourceAuthTokenEnv, sourceAuthUsername)
}@function
async def example(git_sha: str, dry_run: bool, toolchain_image_provider: str, toolchain_image_policy: str, rush_cache_provider: str, rush_cache_policy: str, source_mode: str, source_repository_url: str, source_ref: str, source_auth_token_env: str, source_auth_username: str) -> str:
return await (
dag.rush_delivery()
.release_packages(git_sha, dry_run, toolchain_image_provider, toolchain_image_policy, rush_cache_provider, rush_cache_policy, source_mode, source_repository_url, source_ref, source_auth_token_env, source_auth_username)
)@func()
async example(gitSha: string, dryRun: boolean, toolchainImageProvider: string, toolchainImagePolicy: string, rushCacheProvider: string, rushCachePolicy: string, sourceMode: string, sourceRepositoryUrl: string, sourceRef: string, sourceAuthTokenEnv: string, sourceAuthUsername: string): Promise<string> {
return dag
.rushDelivery()
.releasePackages(gitSha, dryRun, toolchainImageProvider, toolchainImagePolicy, rushCacheProvider, rushCachePolicy, sourceMode, sourceRepositoryUrl, sourceRef, sourceAuthTokenEnv, sourceAuthUsername)
}