如何在YAML中创建包含冒号的配置文件?

时间:2017-05-03 14:01:11

标签: continuous-integration yaml gitlab-ci

根据CI's lint,此yml无效:

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

  artifacts:
    paths:
      - _build
  only:
    - master

错误:

jobs:pages:script config should be a string or an array of strings

如果我删除了echo行上的冒号,它就可以了。

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

url: "https://gitlab.com/group/project"

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

2 个答案:

答案 0 :(得分:10)

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

- 'echo "foo: $VAR" > site.yml'

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

有关详细信息,请参阅here

答案 1 :(得分:2)

如@Jawad所描绘的那样,单引号引起了整行:

- 'echo "foo: $VAR" > site.yml'

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

最简单
- |
  echo "I want to echo the key"
  echo 'foo: $VAR' > site.yml

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