Ошибка использования PWD для определения переменных в .gitlab-ci.yml - PullRequest
0 голосов
/ 29 октября 2019

Я только что заметил, что когда к переменной PWD обращаются в script, она работает так, как и следовало ожидать, например:

test:
    script:
    - docker run --rm -v $PWD/wd image [options]

Но происходит сбой, когдавыше заменяется переменной, содержащей $PWD. Фактически, инструкция, подобная следующей, приведет к ошибке:

variables:
    DOCKER_RUN: "docker run --rm -v $PWD:/wd"

test:
    script:
    - $DOCKER_RUN image [options]

Это потому, что переменная DOCKER_RUN интерпретируется здесь как "docker run --rm -v: / wd". То есть, как если бы PWD было пустым, я не могу понять почему.

Я также изучал предопределенные переменные gitlab , но не могу найти подходящую замену для PWD, а необъединяя их, например. используя "${CI_BUILDS_DIR}/${CI_PROJECT_NAMESPACE}", что также приводит к ошибке.

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете попытаться использовать $$PWD, когда определяете переменную. Тогда GitLab не должен пытаться интерпретировать переменную, а просто сохранить строку docker run --rm -v $PWD:/wd в переменной DOCKER_RUN. Как вы уже написали, GitLab пытается интерпретировать переменную $PWD при анализе файла .gitlab-ci.yml. Это делается на git-сервере, и текущий рабочий каталог не будет иметь смысла в этом контексте.

Когда вы используете $PWD в задании, это выполняется на gitlab-runner как обычная оболочкаскрипт. Тогда текущий рабочий каталог имеет смысл!

...