【问题标题】:Curly braces in a YAML fileYAML 文件中的花括号
【发布时间】:2019-07-05 02:32:27
【问题描述】:

我找到了以下.travis.yml 模板。

我注意到了这一点:

    repo: {GITHUB_USER}/{PROJECT_NAME}

这是我不熟悉的特殊.yml 变量语法吗?我在哪里可以设置这些值(GITHUB_USERPROJECT_NAME)?


我知道我可以像这样使用环境变量:

    repo: $GITHUB_USER/$PROJECT_NAME

但是这个语法看起来不一样。

【问题讨论】:

  • 几乎我认识的每个 YAML 解析器都抱怨这个问题。 YAML 中的花括号代表流样式映射,如果它们是字面的,则必须用引号引起来。我猜这个 YAML 文件是预处理过的,那些是模板占位符,所以最终的 YAML 文件将是有效的

标签: yaml travis-ci


【解决方案1】:

这不是一个有效的 YAML 文件。在第一个 } 之后,YAML 解析器将期待块样式的延续。这意味着与repo 对齐的键或突出。相反,它会找到一个/,并且任何 YAML 解析器都应该在上面抛出一个错误。

这看起来像是 YAML 文件的模板,例如在以字符串 templ 加载文件内容后,在 Python 中使用类似以下内容:

templ.format(**dict(GITHUB_USER="Janez", PROJECT_NAME="test"))

另一方面,YAML 文件的推荐扩展名.yaml 比 Travis 存在的时间长很多年,所以也许这就是他们使用 .yml 扩展名的原因。

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2012-01-18
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多