как сбросить переменные среды gitlab ci в файл - PullRequest
1 голос
/ 05 мая 2020

вопрос

Как выгрузить все переменные среды Gitlab CI (с переменными, заданными в настройках проекта или группы CI / CD) в файл, но только их, без переменных среды хоста, на котором gitlab runner выполняется?

Фон

Мы используем gitlab CI / CD для развертывания наших проектов на сервере docker. Каждый проект содержит файл docker-compose.yml, в котором используются различные переменные среды, например пароли db. Мы используем файл .env для хранения этих переменных, поэтому можно запускать / перезапускать контейнеры после развертывания из командной строки без доступа к gitlab.

Наш сценарий развертывания выглядит примерно так:

deploy: 
  script:
    #...
    - cp docker-compose.development.yml {$DEPLOY_TO_PATH}/docker-compose.yml
    - env > variables.env
    - docker-compose up -d 
    #...

И файл docker-compose.yml выглядит так:

version: "3"
services:
  project:
    image: some/image
    env_file:
      - variables.env
    ...

Проблема в том, что теперь файл .env содержит как переменные gitlab, так и переменные среды хоста, а в результате переменную PATH перезаписывается .

Я разработал обходной путь с grep:

env | grep -Pv "^PATH" > variables.env

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

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

...