Как запустить проект с переменными Gitlab CI registry?
У меня есть 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.