Heroku:如何在 gitlab CI/CD 中发布现有图像?
Heroku: How to release an existing image in gitlab CI/CD?
我想将我的应用程序部署为来自 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:push
heroku container:release
在更新之前,它是在容器被推送到容器注册表时部署的。现在我需要以任何方式释放它。
我尝试将映像重命名为 release 并尝试安装 heroku CLI,但我无法登录到 heroku 注册表。
你是怎么解决的?
这是我昨天发现的触发发布的有效解决方案。您可以使用 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"
此解决方案来自 Kai tödter,您可以在 https://toedter.com/2018/06/02/heroku-docker-deployment-update/
找到它
这是一种简单的方法:
#.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
我想将我的应用程序部署为来自 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:push
heroku container:release
在更新之前,它是在容器被推送到容器注册表时部署的。现在我需要以任何方式释放它。
我尝试将映像重命名为 release 并尝试安装 heroku CLI,但我无法登录到 heroku 注册表。
你是怎么解决的?
这是我昨天发现的触发发布的有效解决方案。您可以使用 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"
此解决方案来自 Kai tödter,您可以在 https://toedter.com/2018/06/02/heroku-docker-deployment-update/
找到它这是一种简单的方法:
#.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