Переменная Gitlab CI, опция с кавычками - PullRequest
0 голосов
/ 14 января 2019

У меня есть следующее gitab-ci.yml file:

stages:
  - tests

.test: &test_job
    image:
      name: test.com/test:latest
      entrypoint: [""]
    script:
    - py.test /test  -v $EXTRA_OPTIONS 

testing:
  variables:
    EXTRA_OPTIONS: -m "not slow"
  <<: *test_job
  stage: tests

Я хотел бы передать опцию для запуска pytest, как:
py.test /tests -v -m "not slow"
чтобы избежать запуска медленных тестов, но gitlab пытается избежать кавычек.
У меня есть что-то вроде: py.test /tests -v -m '"not\' 'slow"'

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

1 Ответ

0 голосов
/ 15 января 2019

Прежде всего, чтобы избежать пробелов в переменной, используйте одинарные кавычки:

variables:
    EXTRA_OPTIONS: -m 'not slow'

Чтобы применить переменную, у вас есть два варианта:

  1. Используйте addopts в сочетании с -o. addopts - это ключ inifile, который позволяет вам сохранить аргументы командной строки в pytest.ini. Аргумент -o/--override-ini позволяет переопределить значение inifile, включая addopts. Комбинация обоих - отличный способ передать аргументы командной строки через переменные окружения:

    script:
      - pytest -v -o "addopts=$EXTRA_OPTIONS" /test
    
  2. Использование eval:

    script:
      - eval pytest -v "$EXTRA_OPTIONS" /test
    

    Однако, вы должны быть очень осторожны при использовании eval; см. Почему в Bash следует избегать eval, и что мне вместо этого использовать? . Поэтому я бы предпочел первый вариант.

...