Deploy pre-built docker images, typically with docker-compose-buildkite-plugin, to using the Heroku Container Registry. It follows the official recommended steps for Docker deploys on Heroku. See ecr-buildkite-plugin for authenticating with AWS ECR.
Heroku API is favoured over depending on the Heroku CLI. This helps to avoid problems with transitive npm dependencies causing CI blockage at scale.
Deploy a pre-built images from ECR to heroku container registry.
steps:
- label: ":heroku: Deploy my-app app (web)"
plugins:
- envato/heroku-container-deploy#v1.3.0:
app: my-app
process-type-images:
- web:XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my-repo:heroku-web-${BUILDKITE_COMMIT}
Deploy multiple pre-built images from ECR to heroku container registry.
steps:
- label: ":heroku: Deploy my-app app (web and worker)"
plugins:
- envato/heroku-container-deploy#v1.3.0:
app: my-app
process-type-images:
- web:XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my-repo:heroku-web-${BUILDKITE_COMMIT}
- worker:XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my-repo:heroku-worker-${BUILDKITE_COMMIT}
Deploy multiple pre-built images including a Release Phase from ECR to heroku container registry. Plugin will stream the release output to Buildkite logs.
steps:
- label: ":heroku: Deploy my-app app (web, worker and release)"
plugins:
- envato/heroku-container-deploy#v1.3.0:
app: my-app
process-type-images:
- web:XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my-repo:heroku-web-${BUILDKITE_COMMIT}
- worker:XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my-repo:heroku-worker-${BUILDKITE_COMMIT}
- release:XXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/my-repo:heroku-release-${BUILDKITE_COMMIT}
Heroku app name
The name of the environment variable that contains the Heroku API key. Defaults to HEROKU_API_KEY
List of process types and their image repository to deploy.
<proc-type>:<ecr>:<tag>
List of process type names to be released. It will allays pull, tag and push all images, but it will only patch the Heroku Formation API with these images.
Default: All process types in process-type-images
except one named migrations
Testing
docker-compose run --rm tests
Linting
docker-compose run --rm lint