Skip to content

Instantly share code, notes, and snippets.

@automata
Created June 5, 2018 00:56
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save automata/a790205175a37a036feeb9e479322858 to your computer and use it in GitHub Desktop.
Save automata/a790205175a37a036feeb9e479322858 to your computer and use it in GitHub Desktop.
Heroku Docker Container Release from GitLab CI (without Heroku CLI)
image: docker:latest
# Remember to set required vars as secret vars on GitLab CI settings
variables:
DOCKER_DRIVER: overlay
CONTAINER_TEST_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}_${CI_COMMIT_SHA}_test
CONTAINER_DEPLOY_IMAGE: ${HEROKU_REGISTRY}/${CI_PROJECT_NAME}/web
HEROKU_API_KEY: ${HEROKU_AUTH_TOKEN}
services:
- docker:dind
before_script:
- docker info
- docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY
- docker login -u $HEROKU_USER -p $HEROKU_AUTH_TOKEN $HEROKU_REGISTRY
- apk add --update curl && rm -rf /var/cache/apk/*
production:
stage: deploy
script:
- docker build --build-arg NODE=development --pull -t $CONTAINER_TEST_IMAGE .
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_DEPLOY_IMAGE
- docker push $CONTAINER_DEPLOY_IMAGE
- ./release.sh $CI_PROJECT_NAME
only:
- tags
#!/bin/sh
# Adapted from https://toedter.com/2018/06/02/heroku-docker-deployment-update/
appName=$1
imageId=$(docker inspect registry.heroku.com/$appName/web --format={{.Id}})
payload='{"updates":[{"type":"web","docker_image":"'"$imageId"'"}]}'
curl -n -X PATCH https://api.heroku.com/apps/$appName/formation \
-d "$payload" \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.heroku+json; version=3.docker-releases" \
-H "Authorization: Bearer $HEROKU_AUTH_TOKEN"
@maodo
Copy link

maodo commented Oct 14, 2019

Actually the release doesn't wok.

@maodo
Copy link

maodo commented Oct 14, 2019

image: docker:stable
services:

  • docker:dind
  • python:alpine

variables:
DOCKER_DRIVER: overlay
HEROKU_APP_NAME: adn-decrypt
HEROKU_REGISTRY_IMAGE: registry.heroku.com/${HEROKU_APP_NAME}/web

stages:

  • build

docker-build:
stage: build
script:
- apk add --no-cache curl
- docker build
--tag $HEROKU_REGISTRY_IMAGE
--file ./Dockerfile
"."
- docker login -u _ -p $HEROKU_AUTH_TOKEN registry.heroku.com
- docker push $HEROKU_REGISTRY_IMAGE
- docker run --rm -e HEROKU_API_KEY=$HEROKU_AUTH_TOKEN wingrunr21/alpine-heroku-cli container:release web --app $HEROKU_APP_NAME

only:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment