无法在GitLab CI YAML中打印包含双引号的字符串

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

我正在使用CI Lint tester来尝试找出如何存储预期的JSON结果,我后来将其与curl响应进行比较。这些都不起作用:

尝试1

---
  image: ruby:2.1
  script:
  - EXPECT_SERVER_OUTPUT='{"message": "Hello World"}'

失败:

在第4行第5列解析块映射时没有找到预期的键

尝试2

---
  image: ruby:2.1
  script:
  - EXPECT_SERVER_OUTPUT="{\"message\": \"Hello World\"}"

失败:

jobs:脚本配置应该是哈希

我也尝试过使用echo的各种组合,没有可行的解决方案。

bash yaml gitlab gitlab-ci
2个回答
10
投票

您可以使用折叠块标量1样式表示法将定义放在单独的行上,而不必担心引用:

myjob:
  image: ruby:2.1
  script:
   - >
    EXPECT_SERVER_OUTPUT='{"message": "Hello World"}'

或者你可以转义嵌套的双引号:

  script:
  - "EXPECT_SERVER_OUTPUT='{\"message\": \"Hello World\"}'"

但你可能也想只使用variables

my_job:
  variables:
     EXPECT_SERVER_OUTPUT: '{"message": "Hello World"}'
  image: ruby:2.1
  script:
   - dothething.sh

1请参阅this answer以获得对此及相关符号的解释


1
投票

我让它像这样工作:

  script: |
   "EXPECT_SERVER_OUTPUT='{\"message\": \"Hello World\"}'"
   echo $EXPECT_SERVER_OUTPUT
© www.soinside.com 2019 - 2024. All rights reserved.