Я пытаюсь использовать общий бегун для запуска сценария, который обрабатывает переменные env, необходимые для развертывания. Сбой моего конфига YAML, который не работает:
release:
stage: release
image: docker:latest
only:
- master
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay
before_script:
- docker version
- docker info
- docker login -u ${CI_REGISTRY_USER} -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
script:
- dckstart=$(cat dockerfile-start)
- export > custom_vars
- chmod +x scripts/format-variables.sh
- bash scripts/format-variables.sh
- dckenv=$(cat custom_vars)
- dckfin=$(cat dockerfile-finish)
- echo -e "$dckstart\n$dckenv\n$dckfin" >> Dockerfile
- rm dockerfile-start dockerfile-finish custom_vars
- docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest --pull .
- docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest
after_script:
- docker logout ${CI_REGISTRY}
Этот шаг завершается неудачно и выдает ошибку:
$ chmod + x scripts / format-variable. sh
$ bash scripts / format-variable. sh
/ bin / sh: eval: строка 101: bash: не найдено
Я попытался:
/bin/bash scripts/format-variables.sh
/ bin / sh: eval: строка 114: / bin / bash: не найдено
cd scripts && ./format-variables.sh
/ bin / sh: eval: строка 116: ./format-variables.sh: не найдено
--shell /bin/bash scripts/format-variables.sh
/ bin / sh: eval: строка 114: --shell: не найдено
Последней попыткой была идея, которую я схватил с документы . Я не указал, какие общие бегуны использовать, но я предполагаю, что используется UNIX на основе всех остальных команд UNIX.
Возможно ли это сделать через общего бегуна или мне нужно чтобы получить выделенного для этого бегуна?
ПРИМЕЧАНИЕ : Я должен использовать Bash для этого сценария, а не Shell из-за использования массивов. Если бы я использовал Shell, я бы обнаружил ошибку, упомянутую здесь