@lilikon

Как в gitlab-ci изменить строку в файле?

Здравствуйте, возникла следующая задача. Есть файл .gitlab-ci.yml в котором надо перед выполнением команды docker build изменить ряд строк в файлах, за пример возьму файл .env, требуется заменить строку DB_PASSWORD.
Пытался выполнить:
docker-build:
  stage: build
  script:
    - perl -pi -e 's/DB_PASSWORD=(\w+){1,}/DB_PASSWORD=${TEST_DB_PASS}/g' .env.build
    - docker build -f docker/Dockerfile -t ${BASE_IMAGE}:latest .
  only:
    - develop
  tags:
    - docker


Если данную команду выполнить просто в терминале она работает отлично, так же она работает в образе который использует runner. Но когда сам runner ее выполнят выдает ошибку:
Can't open perl script "s/DB_PASSWORD=(\w+){1,}/DB_PASSWORD=${TEST_DB_PASS}/g": No such file or directory


Проверял содержимое папки, сам файл .env.build есть в ней. Как понимаю ругается на сам скрипт. Можете подсказать пожалуйста команду или способ как изменить строки в файле?

Сразу добавлю, перезаписать руками в проекте данный файл нельзя (причина - руководство).
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
Мне кажется, gitlab что-то в синтаксисе не нравится. Я бы попробовал обернуть это в скрипт на bash или perl.
Типа

script:
- inject_password.sh .env.build
- docker build -f docker/Dockerfile -t ${BASE_IMAGE}:latest .

Или же можно вообще не редактировать, а подставить пароль через environment variable.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы