【问题标题】:How to correctly quote JSON (with variable) in YAML如何在 YAML 中正确引用 JSON(带变量)
【发布时间】:2023-03-23 05:00:01
【问题描述】:

我正在尝试从 gitlab CI / CD 管道运行命令。该命令本身将 json 作为参数之一。 json 是使用自定义 CI 变量构建的。它适用于以下硬编码版本。

my_command --args '{ "version": "v.0.0.2"}'

但是当 VAR="v.0.0.2"

以下似乎都不起作用

my_command --args '{ "version": $VAR}'
my_command --args '{ "version": \"$VAR\"}'
my_command --args '{ "version": \"{$VAR}\"}'
my_command --args '{ "version": "${VAR}"}'
my_command --args '{ "version": \" ${VAR} \" }'
my_command --args '{ "version": \" "${VAR}" \" }'

就上下文而言,这是一个使用它的小型 CI 管道。 VAR 是 CI 自定义变量。 阶段: - 测试

run_test:
    image: custom_image
    stage: test
    script:
    - | 
      my_command --args '{ "version": "v.0.0.2"}'

能否请您帮助如何正确引用它?网上有 YAML 示例中的 JSON,但没有一个涉及使用变量。

【问题讨论】:

  • 您能否提供更多有关您的 gitlab ci 配置的外观以及此 sn-p 放置位置的背景信息?我认为问题来自您在 json 周围使用的单引号。如果您导出 VAR 然后使用其中一个命令,这些也不会在本地工作...
  • 这是正确的,最终用双引号替换它并工作。我认为单引号和双引号在这种情况下大部分是可以互换的(只要我们正确转义)。但显然他们不是

标签: continuous-integration yaml gitlab-ci


【解决方案1】:

我找到了解决方案,尽管通过反复试验而不是一些我可以参考的文档。以下逃生作品。

my_command --args "{\"version\": \"${VAR}\"}"

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 2019-01-09
    • 2019-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多