Как запустить проект с переменными Gitlab CI registry?

Рейтинг: 1Ответов: 0Опубликовано: 27.04.2023

У меня есть Gitlab раннер, и сейчас я настраиваю CI/CD, используя один гайд. В нем говорится, что раннеру нужно, чтобы имена образов в docker-compose.yml были названы так:

$CI_REGISTRY/organisation/path-to-project/project_image:$CI_ENVIRONMENT_SLUG-$CI_COMMIT_SHA

Я поместил это значение в переменную в файле .env. Но теперь, когда я запускаю docker compose up - выскакивает ошибка - говорит, что $CI_REGISTRY, $CI_ENVIRONMENT_SLUG и $CI_COMMIT_SHA не установлены. Что делать в этом случае? До подключения CI/CD все работало нормально.

level=warning msg="The \"CI_REGISTRY\" variable is not set. Defaulting to a blank string."       
level=warning msg="The \"CI_ENVIRONMENT_SLUG\" variable is not set. Defaulting to a blank string."
level=warning msg="The \"CI_COMMIT_SHA\" variable is not set. Defaulting to a blank string."     
Error response from daemon: no such image: organisation/path-to-project/project_image:-: invalid reference format

В то же время docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY в before_script в .gitlab-ci.yml работает и значения переменных откуда-то вычисляются.

image: docker/compose:alpine-1.28.0

stages:
  - build
  - deploy

before_script:
  - apk add make
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  - cp $ENV $(pwd)/src/.env

build:
  stage: build
  script:
    - make build push
  tags:
    - job:build
  only:
    - main
  environment:
    name: production

deploy:
  stage: deploy
  script:
    - make pull down migrate up
  tags:
    - job:deploy
  only:
    - main
  environment:
    name: production

$ENV в before_script - это переменная из настроек гитлаба.

Вот docker-compose.yml (${IMAGE_NAME} - переменная из .env):

services:
  app1:
    build: .
    image: ${IMAGE_NAME}
    env_file:
      - .env
    # ...

  app2:
    build: .
    image: ${IMAGE_NAME}
    env_file:
      - .env
    # ...

Можете сказать, что я делаю не так? Только начал разбираться с CI/CD.

Ответы

Ответов пока нет.