Yaml中包含引号和撇号的Escape cURL命令

Yaml中包含引号和撇号的Escape cURL命令,curl,escaping,yaml,gitlab-ci,Curl,Escaping,Yaml,Gitlab Ci,我有一个cURL命令: curl -X POST --data-urlencode 'payload={"text": "A new version has been deployed to production."}' https://hooks.slack.com/services/XXXXXXX/XXXXXXXXX/XXXXXXXXXXXXX 我需要在具有Yaml支持的GitLab CI文件中使用它。 Yaml解析器不接受它。通常我会用引号括起来,但我已经在命令中使用引号和撇号了 这就是

我有一个cURL命令:

curl -X POST --data-urlencode 'payload={"text": "A new version has been deployed to production."}' https://hooks.slack.com/services/XXXXXXX/XXXXXXXXX/XXXXXXXXXXXXX
我需要在具有Yaml支持的GitLab CI文件中使用它。 Yaml解析器不接受它。通常我会用引号括起来,但我已经在命令中使用引号和撇号了

这就是命令现在的样子

我怎样才能正确地避开这个序列

deploy:
  stage: deploy
  script:
    - "curl -X POST --data-urlencode 'payload={"text": "A new version has been deployed to production."}' https://hooks.slack.com/services/XXXXXXX/XXXXXXXXX/XXXXXXXXXXXXX"

最简单的方法是使用块标量:

deploy:
  stage: deploy
  script: |-
    curl -X POST --data-urlencode 'payload={"text": "A new version has been deployed to production."}' https://hooks.slack.com/services/XXXXXXX/XXXXXXXXX/XXXXXXXXXXXXX
|
启动一个文本块标量,
-
告诉YAML放弃尾随的换行符(否则它将是标量的一部分)。为了便于阅读,可以使用折叠块标量(换行符将转换为空格):

最后,也可以使用双引号,只要在标量中转义双引号(换行符也折叠成空格):


@宇航员说你应该用一个清单来说明。您可以为列表中的每个项目使用所有这些标量样式(例如,
->-
启动一个包含折叠块标量的列表项目)。哼哼,我确实尝试过,但得到了CI lint的投诉。我遇到的问题是,使用双引号无法解析变量。。。既然是一串呵呵。。。这有点痛苦,对我来说很好!
deploy:
  stage: deploy
  script: >-
    curl -X POST --data-urlencode 'payload={"text":
    "A new version has been deployed to production."}'
    https://hooks.slack.com/services/XXXXXXX/XXXXXXXXX/XXXXXXXXXXXXX
deploy:
  stage: deploy
  script: 
    "curl -X POST --data-urlencode 'payload={\"text\":
     \"A new version has been deployed to production.\"}' 
     https://hooks.slack.com/services/XXXXXXX/XXXXXXXXX/XXXXXXXXXXXXX"