Я начал возиться с Героку docker и Django. Я следовал инструкциям учебника, и все отлично работает. Мое приложение на Heroku, но я не могу обновить свое приложение. Согласно учебному пособию, когда я отправляю свой новый код в Gitlab sh, конвейер запускается, и он развертывает новый код в моем приложении в Heroku. Несмотря на то, что конвейер не передает никаких изменений в моем приложении Heroku, что я делаю не так?
Вот мой .gitlab-ci.yml:
image: docker:stable
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
HEROKU_APP_NAME: myapp
HEROKU_REGISTRY_IMAGE: registry.heroku.com/${HEROKU_APP_NAME}/web
stages:
- build_and_deploy
build_and_deploy:
stage: build_and_deploy
script:
- apk add --no-cache curl
- docker login -u _ -p $HEROKU_AUTH_TOKEN registry.heroku.com
- docker pull $HEROKU_REGISTRY_IMAGE || true
- docker build
--cache-from $HEROKU_REGISTRY_IMAGE
--tag $HEROKU_REGISTRY_IMAGE
--file ./Dockerfile
"."
- docker push $HEROKU_REGISTRY_IMAGE
- chmod +x ./release.sh
И это релиз. sh
#!/bin/sh
IMAGE_ID=$(docker inspect ${HEROKU_REGISTRY_IMAGE} --format={{.Id}})
PAYLOAD='{"updates": [{"type": "web", "docker_image": "'"$IMAGE_ID"'"}]}'
curl -n -X PATCH https://api.heroku.com/apps/"${HEROKU_APP_NAME}"/formation \
-d "${PAYLOAD}" \
-H "Content-Type: application/json" \
-H "Accept: application/vnd.heroku+json; version=3.docker-releases" \
-H "Authorization: Bearer ${HEROKU_AUTH_TOKEN}"
И последнее, но не менее важное: последние сообщения конвейера, так как я думаю, что остальные из них не имеют отношения к моему вопросу.
Successfully built dbd1d36dea04
Successfully tagged registry.heroku.com/gollem/web:latest
$ docker push $HEROKU_REGISTRY_IMAGE
The push refers to repository [registry.heroku.com/gollem/web]
569b9f7da69f: Preparing
3dba57770497: Preparing
6f76eda67156: Preparing
ef56c01e8a45: Preparing
16542a8fc3be: Preparing
6597da2e2e52: Preparing
977183d4e999: Preparing
c8be1b8f4d60: Preparing
6597da2e2e52: Waiting
977183d4e999: Waiting
c8be1b8f4d60: Waiting
16542a8fc3be: Layer already exists
ef56c01e8a45: Layer already exists
6f76eda67156: Layer already exists
977183d4e999: Layer already exists
6597da2e2e52: Layer already exists
c8be1b8f4d60: Layer already exists
569b9f7da69f: Pushed
3dba57770497: Pushed
latest: digest: sha256:df5aced032043ca4cfbe35c103a0bdbebab4460fee02b69d88541b96222b1e19 size: 1996
$ chmod +x ./release.sh
Running after_script
00:02
Saving cache
00:01
Uploading artifacts for successful job
00:02
Job succeeded
РЕДАКТИРОВАТЬ: Похоже, gitlab-ci.yml никогда не выполнял релиз. sh скрипт. Поэтому я добавил sh release.sh
в конце скрипта.
image: docker:stable
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
HEROKU_APP_NAME: myapp
HEROKU_REGISTRY_IMAGE: registry.heroku.com/${HEROKU_APP_NAME}/web
stages:
- build_and_deploy
build_and_deploy:
stage: build_and_deploy
script:
- apk add --no-cache curl
- docker login -u _ -p $HEROKU_AUTH_TOKEN registry.heroku.com
- docker pull $HEROKU_REGISTRY_IMAGE || true
- docker build
--cache-from $HEROKU_REGISTRY_IMAGE
--tag $HEROKU_REGISTRY_IMAGE
--file ./Dockerfile
"."
- docker push $HEROKU_REGISTRY_IMAGE
- chmod +x ./release.sh
- sh release.sh