Docker + GitLab CI - помечать изображение как «последнее» после успешного тестирования - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь пометить автоматически созданные образы Docker в моем личном реестре в GitLab-CI, но задание 'release' завершается неудачно с: Error response from daemon: No such image: dev.skibapro.de:5050/dransfeld/dockerci-test:v0.4

Это мой .gitlab-ci.yml, задания по сборке и тестированию выполняются без ошибок и docerci-test: v0.4 присутствует в моем реестре после запуска конвейера.

image: docker:stable
variables:
  DOCKER_DRIVER: overlay2
  IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME

services:
  - docker:dind

stages:
  - build
  - test
  - release

before_script:
  - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY

build:
  only:
    - tags
  stage: build
  script:
  - docker build -t $IMAGE_TAG -f docker/Dockerfile .
  - docker push $IMAGE_TAG

test:
  only:
    - tags
  stage: test
  script:
  - docker run $IMAGE_TAG /usr/local/bin/test.sh

release:
  only:
    - tags
  stage: release
  script:
  - docker tag $IMAGE_TAG "$CI_REGISTRY_IMAGE:latest"

Это ошибка, которую я получаю в журнале заданий:

$ docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
$ docker tag $IMAGE_TAG "$CI_REGISTRY_IMAGE:latest"
Error response from daemon: No such image: dev.skibapro.de:5050/dransfeld/dockerci-test:v0.4
ERROR: Job failed: exit code 1

Я не знаю, это изображение просто еще не присутствует, когда запускается этап 'release', или если я прошу docker сделать что-то, что он не может ... Я хочу, чтобы последний тег был только применяется после успешного завершения этапа испытаний.

1 Ответ

0 голосов
/ 03 июля 2018

Altough Docker, похоже, поддерживает маркировку изображений в удаленных реестрах ( Добавление удаленного тега в образ Docker ), GitLab должен сначала извлечь изображение из удаленного реестра. Из блога GitLab (https://about.gitlab.com/2016/05/23/gitlab-container-registry/)

release-image:
  stage: release
  script:
    - docker pull $CONTAINER_TEST_IMAGE
    - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
    - docker push $CONTAINER_RELEASE_IMAGE
...