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

问题描述 投票:4回答:2

根据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被认为是无效的,我找不到变通办法。或者我必须在我的工具周围编写代码来传递命令行参数而不是读取配置文件。不过,这个冒号似乎是一个错误。

gitlab-ci
2个回答
12
投票

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

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

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

有关更多信息,请参阅here


2
投票

如@Jawad所描述的那样,整条线上的单引号有效:

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.