Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Releases

Deployments consume two kinds of build artifacts:

  • Lambda zips — one bootstrap.zip per function, in the regional dcp-artifacts-{region}.
  • The dcp Docker imageduracloud/dcp, used by the ECS scheduled tasks (e.g. Archive-It).

Both are published with a derived version so test builds can be deployed without disturbing what production stacks use.

Version scheme

There is no semantic versioning and nothing to bump. Every publish derives its version from git:

<version> = <UTC date>-<short commit hash>[-dirty]
            e.g. 20260710-f34103e

The -dirty suffix is added when the working tree has uncommitted changes, so a build of unreleased work can never masquerade as its base commit. The same string is used as the S3 prefix and the Docker tag.

Channels

ChannelLambda zipsDocker imageWritten by
versioneds3://dcp-artifacts-{region}/v/<version>/<fn>/bootstrap.zipduracloud/dcp:<version>every publish / push
stables3://dcp-artifacts-{region}/<fn>/bootstrap.zipduracloud/dcp:latest--channel stable (what mise run release uses)

Stacks deployed without a pinned version follow the stable channel. Publishing to the stable channel is refused from a dirty tree, so every stable artifact is traceable to a commit. Versioned copies are never deleted, which is what makes rollback possible.

Testing a build

Publish the artifacts (versioned channel only — the stable channel and any production stack are untouched):

# Lambda zips; prints the version, e.g. 20260710-f34103e
mise run publish --profile <profile>

# dcp image, if the image is part of what you are testing
mise run push --profile <profile>

Deploy a test stack pinned to that version:

mise run deploy --stack <stack> --profile <profile> --version 20260710-f34103e

--version sets both the lambda zip keys (v/<version>/...) and the dcp image tag. Terraform fails at plan time if the version was never published (the aws_s3_object data sources look the keys up), so a typo cannot deploy stale artifacts.

Promoting to stable

Once the build is verified, commit, then release from the clean tree:

mise run release --profile <profile>

This rebuilds and publishes everything to both channels: the stable keys and latest tag are updated, and an immutable versioned copy is kept alongside.

Rolling back

Redeploy pinned to any previously released version:

mise run deploy --stack <stack> --profile <profile> --version <older-version>

To roll the stable channel itself back, check out the corresponding commit and run mise run release from it.