Rundeck - API 在 JSON 中导入作业响应
Rundeck - API import job response in JSON
我尝试在 JSON 中返回来自 Rundeck 导入端点的响应,但没有提到的内容类型 (application/json) 对我有用。
请告诉我当前 curl 命令哪里出了问题:
curl -kSsv --header "X-Rundeck-Auth-Token:$RUNDECK_JOB_IMPORT_TOKEN" -F xmlBatch=@"$rdeck_yaml_file" "$RUNDECK_HOST:4443/api/33/project/$RUNDECK_PROJECT_NAME/jobs/import?dupeOption=update&fileformat=yaml"
我得到了以下回复,我知道我遇到了什么错误。
我真的很难在我的 CI/CD 管道上捕捉到这种异常,我在想我是否会得到 JSON 响应而不是 XML 这很容易已解析,自动管道将因发生任何错误而失败。
<result success='true' apiversion='33'>
<succeeded count='1'>
<job index='3' href='https:/RUNDECK_HOST/:4443/api/33/job/8b357ba5-14df-4e20-bb6c-c6ea089ecf70'>
<id>8b357ba5-14df-4e20-bb6c-c6ea089ecf70</id>
<name>ssr_id</name>
<group></group>
<project>project-name</project>
<permalink>https://RUNDECK_HOST:4443/project/project-name/job/show/8b357ba5-14df-4e20-bb6c-c6ea089ecf70</permalink>
</job>
</succeeded>
<failed count='2'>
<job index='1'>
<name>job-name</name>
<group>group-name</group>
<project>project-name</project>
<error>Workflow must have at least one step
Invalid Option definition: flag: Workflow must have at least one step
Validation errors: Workflow must have at least one step; Invalid Option definition: flag: Workflow must have at least one step</error>
</job>
<job index='2'>
<name>my_group</name>
<group></group>
<project>project-name</project>
<error>Workflow must have at least one step
Validation errors: Workflow must have at least one step</error>
</job>
</failed>
<skipped count='0' />
</result>*
让我知道我需要改进的地方。
以这种方式工作(我的脚本有点不同,但作为示例):
#!/bin/sh
# protocol
protocol="http"
# basic rundeck info
rdeck_host="pop-os"
rdeck_port="4440"
rdeck_api="38"
rdeck_token="MbBwnnddLO2hhFJahwJ2pVARVTpG949j"
# specific api call info
rdeck_project="ProjectEXAMPLE"
rdeck_yaml_file="myfile.yaml"
# api call
curl -s --location --request POST "$protocol://$rdeck_host:$rdeck_port/api/$rdeck_api/project/$rdeck_project/jobs/import?dupeOption=update&fileformat=yaml" \
--header "Accept: application/json" \
--header "X-Rundeck-Auth-Token: $rdeck_token" \
-F xmlBatch=@"$rdeck_yaml_file"
输出(使用jq“美化”):
{
"succeeded": [
{
"index": 1,
"href": "http://pop-os:4440/api/38/job/0aeaa0f4-d090-4083-b0a5-2878c5f558d1",
"id": "0aeaa0f4-d090-4083-b0a5-2878c5f558d1",
"name": "ChildJob",
"group": "",
"project": "ProjectEXAMPLE",
"permalink": "http://pop-os:4440/project/ProjectEXAMPLE/job/show/0aeaa0f4-d090-4083-b0a5-2878c5f558d1"
}
],
"failed": [],
"skipped": []
}
我尝试在 JSON 中返回来自 Rundeck 导入端点的响应,但没有提到的内容类型 (application/json) 对我有用。
请告诉我当前 curl 命令哪里出了问题:
curl -kSsv --header "X-Rundeck-Auth-Token:$RUNDECK_JOB_IMPORT_TOKEN" -F xmlBatch=@"$rdeck_yaml_file" "$RUNDECK_HOST:4443/api/33/project/$RUNDECK_PROJECT_NAME/jobs/import?dupeOption=update&fileformat=yaml"
我得到了以下回复,我知道我遇到了什么错误。
我真的很难在我的 CI/CD 管道上捕捉到这种异常,我在想我是否会得到 JSON 响应而不是 XML 这很容易已解析,自动管道将因发生任何错误而失败。
<result success='true' apiversion='33'>
<succeeded count='1'>
<job index='3' href='https:/RUNDECK_HOST/:4443/api/33/job/8b357ba5-14df-4e20-bb6c-c6ea089ecf70'>
<id>8b357ba5-14df-4e20-bb6c-c6ea089ecf70</id>
<name>ssr_id</name>
<group></group>
<project>project-name</project>
<permalink>https://RUNDECK_HOST:4443/project/project-name/job/show/8b357ba5-14df-4e20-bb6c-c6ea089ecf70</permalink>
</job>
</succeeded>
<failed count='2'>
<job index='1'>
<name>job-name</name>
<group>group-name</group>
<project>project-name</project>
<error>Workflow must have at least one step
Invalid Option definition: flag: Workflow must have at least one step
Validation errors: Workflow must have at least one step; Invalid Option definition: flag: Workflow must have at least one step</error>
</job>
<job index='2'>
<name>my_group</name>
<group></group>
<project>project-name</project>
<error>Workflow must have at least one step
Validation errors: Workflow must have at least one step</error>
</job>
</failed>
<skipped count='0' />
</result>*
让我知道我需要改进的地方。
以这种方式工作(我的脚本有点不同,但作为示例):
#!/bin/sh
# protocol
protocol="http"
# basic rundeck info
rdeck_host="pop-os"
rdeck_port="4440"
rdeck_api="38"
rdeck_token="MbBwnnddLO2hhFJahwJ2pVARVTpG949j"
# specific api call info
rdeck_project="ProjectEXAMPLE"
rdeck_yaml_file="myfile.yaml"
# api call
curl -s --location --request POST "$protocol://$rdeck_host:$rdeck_port/api/$rdeck_api/project/$rdeck_project/jobs/import?dupeOption=update&fileformat=yaml" \
--header "Accept: application/json" \
--header "X-Rundeck-Auth-Token: $rdeck_token" \
-F xmlBatch=@"$rdeck_yaml_file"
输出(使用jq“美化”):
{
"succeeded": [
{
"index": 1,
"href": "http://pop-os:4440/api/38/job/0aeaa0f4-d090-4083-b0a5-2878c5f558d1",
"id": "0aeaa0f4-d090-4083-b0a5-2878c5f558d1",
"name": "ChildJob",
"group": "",
"project": "ProjectEXAMPLE",
"permalink": "http://pop-os:4440/project/ProjectEXAMPLE/job/show/0aeaa0f4-d090-4083-b0a5-2878c5f558d1"
}
],
"failed": [],
"skipped": []
}