Skip to content

envato/heroku-container-deploy-buildkite-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Heroku Container Deploy

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.

Design Decision

Heroku API is favoured over depending on the Heroku CLI. This helps to avoid problems with transitive npm dependencies causing CI blockage at scale.

Example

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}

Configuration

app (Required, string)

Heroku app name

key-name (Optional, string)

The name of the environment variable that contains the Heroku API key. Defaults to HEROKU_API_KEY

process-type-images (Required, Array of string)

List of process types and their image repository to deploy.

<proc-type>:<ecr>:<tag>

releasing (Optional, Array of string)

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

Developing

Testing

docker-compose run --rm tests

Linting

docker-compose run --rm lint