Gitlab CI:不能在字符串中放一个冒号?创建配置文件

Ehv*_*nce 9 continuous-integration yaml gitlab-ci

根据CI的lint,这个yml是无效的:

pages:
  stage: deploy
  image: python:3.5
  script:
  - echo "foo: $VAR" > site.yml
  - cat ~/.python-gitlab.cfg

  artifacts:
    paths:
      - _build
  only:
    - master
Run Code Online (Sandbox Code Playgroud)

错误:

jobs:pages:script config should be a string or an array of strings
Run Code Online (Sandbox Code Playgroud)

如果我删除该echo行上的冒号,它的工作原理.

我想要做的是动态创建一些配置文件,以符合现有工具,使用私有变量,如echo "url: $CI_PROJECT_URL" > site.yml生产

url: "https://gitlab.com/group/project"
Run Code Online (Sandbox Code Playgroud)

但我不能这样做,因为yaml被认为是无效的,我找不到变通办法.或者我必须在我的工具周围编写代码来传递命令行参数而不是读取配置文件.不过,这个冒号似乎是一个错误.

有任何想法吗 ?谢谢 !

Jaw*_*wad 13

如果你将整行包装在这样的引号中它应该工作:

- 'echo "foo: $VAR" > site.yml'
Run Code Online (Sandbox Code Playgroud)

Gitlab的CI lint将其标记为正确的语法.

有关详细信息,请参见此处


小智 7

正如@Jawad 所描绘的,整行的单引号有效:

- 'echo "foo: $VAR" > site.yml'
Run Code Online (Sandbox Code Playgroud)

但是,如果您的命令包含其他单引号,我发现使用pipeBlock Scaler Style最简单:|

- |
  echo "I want to echo the key"
  echo 'foo: $VAR' > site.yml
Run Code Online (Sandbox Code Playgroud)

可以在此处找到有关块缩放器样式的更多文档:http : //www.yaml.org/spec/1.2/spec.html#id2760844