gitlab-ci: предоставить переменные окружения для настраиваемого образа докера в конвейере - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу настроить тестовую стадию для моего gitlab-ci, которая зависит от настраиваемого образа докера.Я хочу знать, как я предоставлю ему некоторые настройки (например, установив переменную env для предоставления файла .env), чтобы пользовательский образ работал правильно и, следовательно, на этапе.Текущая конфигурация:

test_job:
  only:
  refs:
    - master
    - merge_requests
    - web
stage: test
services:
  - mongo:4.0.4
  - redis:5.0.1
  - registry.gitlab.com/myteam/myprivaterepo:latest 
variables:
  - PORT=3000
  - SERVER_HOST=myprivaterepo
  - SERVER_PORT=9090
script: npm test

Я хочу предоставить переменные окружения для myprivaterepo образа докера, который подключается к сервисам mongo:4.0.4 и redis:5.0.1 для его функционирования.

РЕДАКТИРОВАТЬ: Переменные MONGODB_URI="mongodb://mongo:27017/aics" и REDIS_CLIENT_HOST: "redis".Они не имеют значения для тестируемого приложения, но имеют значение для образа myprivaterepo, без которого этап тестирования не пройдёт.

1 Ответ

0 голосов
/ 20 декабря 2018

Я понял это.Это так же просто, как добавить переменные окружения в часть variables: yaml.Вот что сработало для меня: -

test_job:
only:
refs:
  - master
  - merge_requests
  - web
stage: test
services:
  - mongo:4.0.4
  - redis:5.0.1
  - name: registry.gitlab.com/myteam/myprivaterepo:latest
    alias: myprivaterepo
variables:
  - MYPRIVATEREPO_PORT: 9090 # Had to modify image to use this variable
  - MONGODB_URI: mongodb://mongo:27017/aics
  - REDIS_CLIENT_HOST: redis
  - PORT: 3000 # for app being tested
  - SERVER_HOST: myprivaterepo
  - SERVER_PORT: 9090
script: npm test

Эти переменные, похоже, применяются ко всем сервисам.

ПРИМЕЧАНИЕ : есть ловушка - вы не можете использовать 2 изображения с одинаковыми именами переменных среды.

Например, я изначально использовал PORT=???? в качестве переменных окружения в обоих myprivaterepo, и это приложение тестировалось, поэтому появлялась ошибка, говорящая EADDRINUSE.Поэтому мне пришлось обновить myprivaterepo, чтобы использовать MYPRIVATEREPO_PORT

В Gitlab-ce поднят тикет , который знает, когда он будет реализован.

...