как запустить тест на созданном образе перед тем, как отправить его в реестр контейнера?

Из документации gitlab вот как создать образ докера с помощью kaniko:

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - mkdir -p /kaniko/.docker
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
  only:
    - tags

но я хочу сначала запустить тест (pytest), прежде чем помещать его в реестр контейнеров. Любая помощь приветствуется. Благодарность!

1 ответ

Я предполагаю, что вы хотите запустить тесты внутри контейнера Docker, для которого вы создаете образ.

Лучшее решение, которое я придумал до сих пор, это

  1. добавить тесты как еще один этап в многоэтапном
  2. в вашейtest-imagejob, запустите Kaniko, не загружая образ в конце (это запустит ваши тесты во время сборки образа)
  3. вbuild-imageзадание, запустите Kaniko с отправкой изображения и укажите этап/слой изображения, которое вы хотите отправить, используя--targetдиректива

Вот пример:

.gitlab-ci.yml

      build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  before_script:
    - mkdir -p /kaniko/.docker
    - >-
     echo "{\"auths...}" > /kaniko/.docker/config.json
  script:
    - >-
      /kaniko/executor
      --context $KANIKO_BUILD_CONTEXT
      --dockerfile $DOCKERFILE_PATH
      --destination $IMAGE_TAG
      --target image

Dockerfile

      FROM ubuntu as image

RUN apt update -y && \
    apt upgrade -y
    
RUN apt install -y git



FROM devimage as test

# smoke test to see whether git was installed as expected
RUN git --version

# you can add further tests here...

Это запустит тесты на втором этапе сборки Docker. Это место, где вы также можете установить тестовые фреймворки и другие ресурсы только для тестирования, которые не должны попадать в образ, помещенный в реестр контейнеров.

Канико не будет продвигать изображение, если тесты не пройдут.

Другие вопросы по тегам