使用 yml 时,帖子正文未在 gitlabci 中发送

问题描述 投票:0回答:1

我正在努力通过我的 gitlabci 文件中的 CURL 发出发布请求。我正在尝试发布到 API,但是,由于某种原因,正文似乎没有发送。

我已经在各种在线验证器中测试了我的curl请求以及在邮递员中导入,这一切似乎都工作正常。

gitlabci file

请求通过我们的 API 正确验证,正文 (-d) 根本不发送 有人能指出我正确的方向吗?

update:
    stage: update
    script:
         - >- 
            curl -X POST -v --location "www.example.com/example" \ 
            -H "Authorization: Api-Token anAPiToken"  \
            -H "Content-Type: application/json; charset=utf-8" \
            -d '{   "entitySelector": "entityId(SERVICE-8E3722AC3F76B09D)",
                    "eventType": "CUSTOM_DEPLOYMENT",
                    "title": "New Deployment Triggered",  
                    "properties": { 
                        "RemediationUrl": "www.example.com/example"
                    }
                }' 

在一行中发送 -d 根据其他 SO 问题的建议,在 gitlabci 中使用 Curl 的各种不同方法

curl gitlab-ci gitlab-ci.yml
1个回答
0
投票

我在 GitHub actions 中测试了这个,但原理对于 GitLab 来说应该是一样的。

当前您的脚本的评估结果如下:

 curl -X POST -v --location "www.example.com/example" \  -H "Authorization: Api-Token anAPiToken"  \ -H "Content-Type: application/json; charset=utf-8" \ -d '{   "entitySelector": "entityId(SERVICE-8E3722AC3F76B09D)",
          "eventType": "CUSTOM_DEPLOYMENT",
          "title": "New Deployment Triggered",  
          "properties": { 
              "RemediationUrl": "www.example.com/example"
          }
      }' 

注意中间额外的

\
字符。我假设您尝试在这些行上添加有意的行延续,而不是在最后一个 JSON 正文部分。然而,事实并非如此。

>-
基本上分解为组件:

  • >
    删除除最后一个之外的所有内部换行符

  • -
    是一个 chomping 指示符 "剥离由“-”chomping 指示符指定。在这种情况下,最后的换行符和任何尾随空行将从标量的内容中排除。 "

所以换句话说,你不需要自己用

/
指定续行,这些已经被自动删除了。

所以基本上,这应该有效:

        script:
          - >- 
            curl -X POST -v --location "www.example.com/example"
            -H "Authorization: Api-Token anAPiToken"
            -H "Content-Type: application/json; charset=utf-8"
            -d '{   "entitySelector": "entityId(SERVICE-8E3722AC3F76B09D)",
                    "eventType": "CUSTOM_DEPLOYMENT",
                    "title": "New Deployment Triggered",  
                    "properties": { 
                        "RemediationUrl": "www.example.com/example"
                    }
                }' 

但是请注意,这会将所有内容输出到一行上。如果您出于某种原因需要并希望在 POST 正文内容上进行换行,请参阅如何在 YAML 中将字符串分成多行?了解更多信息。

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