Heroku:如何在gitlab CI / CD中发布现有图像?

时间:2018-06-18 12:43:16

标签: docker heroku heroku-toolbelt heroku-cli

我想将我的应用程序从Gitlab CI / CD管道部署为容器。

几天前,我可以按照heroku devCenter中的说明部署我的docker镜像。

  

docker login --username = _ --password = $(heroku auth:token)registry.heroku.com

并将其推送到heroku注册表。

  

docker tag imageregistry.heroku.com/app/process-type

     

docker push registry.heroku.com/app/process-type

但后来他们分两步改变了部署

  

heroku cointainer:推

     

heroku container:release

在更新之前,将容器推入容器注册表时进行部署。现在我需要以任何方式释放它。

我尝试将图片重命名为release并尝试安装heroku CLI但我无法登录heroku注册表。

你是怎么解决的?

2 个答案:

答案 0 :(得分:1)

这是我昨天发现的有效解决方案,可以触发发布。您可以继续使用docker进行部署,只需将此小脚本添加到管道中即可。

#!/bin/bash
imageId=$(docker inspect registry.heroku.com/$YOUR_HEROKU_APP/web --format={{.Id}})
payload='{"updates":[{"type":"web","docker_image":"'"$imageId"'"}]}'
curl -n -X PATCH https://api.heroku.com/apps/${YOUR_HEROKU_APP}/formation \
-d "$payload" \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.heroku+json; version=3.docker-releases" \
-H "Authorization: Bearer $YOUR_HEROKU_API_KEY"

此解决方案来自Kaitödter,您可以在https://toedter.com/2018/06/02/heroku-docker-deployment-update/

找到它

答案 1 :(得分:0)

这是一种简单的方法:

#.gitlab-ci.yml
..............
deploy_stage:
stage: deploy
tags:
- docker
only:
- master
script:
- docker login --username=_ --password=$HEROKU_API_KEY registry.heroku.com
- docker pull $CONTAINER_IMAGE:staging
- docker tag $CONTAINER_IMAGE:staging registry.heroku.com/django-cloud/web
- docker push registry.heroku.com/django-cloud/web
- docker run --rm -e HEROKU_API_KEY=$HEROKU_API_KEY wingrunr21/alpine-heroku-cli container:release web --app django-cloud

参考: https://gitlab.com/Banzyme2/django-cloud9-dokcer