1

我有 GoCD 实例,并希望使用 GoCD API 自动执行常规操作,例如调度管道和检查管道状态。

当我做 GET 请求时,它可以工作:

curl 'https://gocd.demo.kagarlickij.com/go/api/pipelines/frankenstein/status' \
 -u 'kagarlickij:Pa$$w0rd' | jq

在此处输入图像描述

..但是当我发出 POST 请求时,它返回“找不到您请求的资源!”:

curl 'https://gocd.demo.kagarlickij.com/go/api/pipelines/frankenstein/pause' \
-u 'kagarlickij:Pa$$w0rd' \
-H 'Accept: application/vnd.go.cd.v1+json' -H 'Content-Type: application/json' \
-X POST -d '{"pause_cause": "Investigating build failures"}'  | jq  

在此处输入图像描述

..另一个 POST 示例:

curl 'https://gocd.demo.kagarlickij.com/go/api/pipelines/frankenstein/schedule' \
-u 'kagarlickij:P@$$w0rd' \
-H 'Accept: application/vnd.go.cd.v1+json' -H 'Content-Type: application/json' \
-X POST -d @gocd.json  | jq

json内容:

{
    "environment_variables": {},
    "materials": {},
    "update_materials_before_scheduling": false
}

在此处输入图像描述

任何想法如何使用 API 启动管道?

4

2 回答 2

1

一些 GoCD API 调用需要 'Confirm': 'true'标头。在您的情况下,您可以尝试像这样运行 curl:

curl 'https://gocd.demo.kagarlickij.com/go/api/pipelines/frankenstein/pause' \ -u 'kagarlickij:Pa$$w0rd' \ -H 'Accept: application/vnd.go.cd.v1+json' \ -H 'Content-Type: application/json' \ -H 'Confirm: true' \ -X POST -d '{"pause_cause": "Investigating build failures"}' | jq

我可以推荐我的用于 GoCD 的 lib yagocd,它关注版本不兼容问题并使使用 GoCD API 变得更加容易。

于 2018-03-25T15:01:35.060 回答
0

答案很简单——API 操作需要 GoCD v18.2.0 但我有 v18.0.0

升级后 API 调用按预期工作

于 2018-03-28T07:41:39.447 回答