微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rundeck - JSON 格式的 API 导入作业响应

如何解决Rundeck - JSON 格式的 API 导入作业响应

我尝试从 Rundeck 导入端点以 JSON 返回响应,但没有提到的内容类型(应用程序/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": []
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。