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

问题描述 投票:0回答:3

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

几天前,我可以部署我的 docker 镜像,如 heroku devCenter 中所写。

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

并将其推送到 heroku 注册表。

docker 标签 imageregistry.heroku.com/app/process-type

docker 推送registry.heroku.com/app/process-type

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

heroku 硬币容器:push

heroku 容器:发布

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

我尝试将映像重命名为release,并尝试安装heroku CLI,但随后我无法登录heroku注册表。

你是怎么解决的?

docker heroku heroku-toolbelt heroku-cli
3个回答
8
投票

这是我昨天发现的一个有效的解决方案,它触发了发布。您可以使用 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/

找到它

3
投票

这是一种简单的方法:

#.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


0
投票

将 .gitlab_ci.yml 功能倒入应用程序烧瓶中。在 GitLab 上构建 Docker 镜像。 L'image Docker 是 Heroku 上的套间 poussée et lancée

image: docker:latest

services:
  - docker:dind

stages:
  - process


variables:
  HEROKU_REGISTRY: registry.heroku.com
  HEROKU_APP_NAME: <app name>
  IMAGE_NAME: web

process:
  stage: process
  script:
    - echo $HEROKU_API_KEY | docker login --username=_ --password-stdin $HEROKU_REGISTRY
    - docker buildx build --provenance false --platform linux/amd64 -t $HEROKU_REGISTRY/$HEROKU_APP_NAME/$IMAGE_NAME .
    - docker push $HEROKU_REGISTRY/$HEROKU_APP_NAME/$IMAGE_NAME
    - docker run --rm -e HEROKU_API_KEY=$HEROKU_API_KEY wingrunr21/alpine-heroku-cli container:release web --app $HEROKU_APP_NAME
  only:
    - main
© www.soinside.com 2019 - 2024. All rights reserved.