Gitlab CI变量,带引号的选项

时间:2019-01-14 12:34:53

标签: gitlab pytest

我有以下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"'

是否有可能创建一个无需转义就可以内联的变量?
我所发现的只是this link,但无济于事。

1 个答案:

答案 0 :(得分:0)

首先,为避免在变量中转义空格,请使用单引号:

variables:
    EXTRA_OPTIONS: -m 'not slow'

要应用变量,您有两个选择:

  1. 结合使用addopts-oaddoptsenables you to persist command line args in pytest.ini的inifile密钥。 -o/--override-ini arg允许覆盖一个inifile值,包括addopts。两者的结合是一个通过环境变量传递命令行参数的漂亮技巧:

    script:
      - pytest -v -o "addopts=$EXTRA_OPTIONS" /test
    
  2. 使用eval

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

    但是,使用eval时需要非常小心;参见Why should eval be avoided in Bash, and what should I use instead? 。因此,我希望第一种选择。