0

i have a json file containing data about Jenkins stages. assuming i have the stage name stored in a variable how do i retrieve the "durationMillis" value from that stage

STAGE1="CLEANUP WORKSTATION"

so far i was able to dissect the last job (json containing 3 last Jenkins jobs)

cat file.json | jq '.[] | select(.id=='\"$BUILD_NUMBER\"')'

outcome should present "157"

[
    {
      "_links": {
        "self": {
          "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/wfapi/describe"
        }
      },
      "id": "72",
      "name": "#72",
      "status": "SUCCESS",
      "startTimeMillis": 1646952992850,
      "endTimeMillis": 1646953018448,
      "durationMillis": 25598,
      "queueDurationMillis": 24,
      "pauseDurationMillis": 0,
      "stages": [
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/execution/node/8/wfapi/describe"
            }
          },
          "id": "8",
          "name": "CLEANUP WORKSTATION",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646953001559,
          "durationMillis": 157,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/execution/node/12/wfapi/describe"
            }
          },
          "id": "12",
          "name": "GIT CLONE",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646953001716,
          "durationMillis": 302,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/execution/node/25/wfapi/describe"
            }
          },
          "id": "25",
          "name": "ALL STAGES",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646953002199,
          "durationMillis": 893,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/execution/node/33/wfapi/describe"
            }
          },
          "id": "33",
          "name": "STAGE1",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646953003092,
          "durationMillis": 3760,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/execution/node/35/wfapi/describe"
            }
          },
          "id": "35",
          "name": "STAGE2",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646953003196,
          "durationMillis": 7348,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/execution/node/37/wfapi/describe"
            }
          },
          "id": "37",
          "name": "STAGE3",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646953003241,
          "durationMillis": 5522,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/72/execution/node/90/wfapi/describe"
            }
          },
          "id": "90",
          "name": "Declarative: Post Actions",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646953010757,
          "durationMillis": 7430,
          "pauseDurationMillis": 0
        }
      ]
    },
    {
      "_links": {
        "self": {
          "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/wfapi/describe"
        }
      },
      "id": "71",
      "name": "#71",
      "status": "SUCCESS",
      "startTimeMillis": 1646952745744,
      "endTimeMillis": 1646952770031,
      "durationMillis": 24287,
      "queueDurationMillis": 19,
      "pauseDurationMillis": 0,
      "stages": [
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/execution/node/8/wfapi/describe"
            }
          },
          "id": "8",
          "name": "CLEANUP WORKSTATION",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952754330,
          "durationMillis": 203,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/execution/node/12/wfapi/describe"
            }
          },
          "id": "12",
          "name": "GIT CLONE",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952754533,
          "durationMillis": 457,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/execution/node/25/wfapi/describe"
            }
          },
          "id": "25",
          "name": "ALL STAGES",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952756222,
          "durationMillis": 536,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/execution/node/33/wfapi/describe"
            }
          },
          "id": "33",
          "name": "STAGE1",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952756758,
          "durationMillis": 4344,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/execution/node/35/wfapi/describe"
            }
          },
          "id": "35",
          "name": "STAGE2",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952756811,
          "durationMillis": 6175,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/execution/node/37/wfapi/describe"
            }
          },
          "id": "37",
          "name": "STAGE3",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952756842,
          "durationMillis": 4167,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/71/execution/node/90/wfapi/describe"
            }
          },
          "id": "90",
          "name": "Declarative: Post Actions",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952763230,
          "durationMillis": 6588,
          "pauseDurationMillis": 0
        }
      ]
    },
    {
      "_links": {
        "self": {
          "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/wfapi/describe"
        }
      },
      "id": "70",
      "name": "#70",
      "status": "FAILED",
      "startTimeMillis": 1646952648485,
      "endTimeMillis": 1646952669992,
      "durationMillis": 21507,
      "queueDurationMillis": 16,
      "pauseDurationMillis": 0,
      "stages": [
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/execution/node/8/wfapi/describe"
            }
          },
          "id": "8",
          "name": "CLEANUP WORKSTATION",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952657661,
          "durationMillis": 177,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/execution/node/12/wfapi/describe"
            }
          },
          "id": "12",
          "name": "GIT CLONE",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952657838,
          "durationMillis": 349,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/execution/node/25/wfapi/describe"
            }
          },
          "id": "25",
          "name": "ALL STAGES",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952658407,
          "durationMillis": 198,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/execution/node/33/wfapi/describe"
            }
          },
          "id": "33",
          "name": "STAGE1",
          "execNode": "",
          "status": "FAILED",
          "error": {
            "message": "script returned exit code 2",
            "type": "hudson.AbortException"
          },
          "startTimeMillis": 1646952658605,
          "durationMillis": 3434,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/execution/node/35/wfapi/describe"
            }
          },
          "id": "35",
          "name": "STAGE2",
          "execNode": "",
          "status": "FAILED",
          "error": {
            "message": "script returned exit code 2",
            "type": "hudson.AbortException"
          },
          "startTimeMillis": 1646952658638,
          "durationMillis": 5948,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/execution/node/37/wfapi/describe"
            }
          },
          "id": "37",
          "name": "STAGE3",
          "execNode": "",
          "status": "FAILED",
          "error": {
            "message": "script returned exit code 2",
            "type": "hudson.AbortException"
          },
          "startTimeMillis": 1646952658669,
          "durationMillis": 3969,
          "pauseDurationMillis": 0
        },
        {
          "_links": {
            "self": {
              "href": "/jenkins/cag-sw-jenkins/job/test/job/test-hagay-elk-kv/70/execution/node/90/wfapi/describe"
            }
          },
          "id": "90",
          "name": "Declarative: Post Actions",
          "execNode": "",
          "status": "SUCCESS",
          "startTimeMillis": 1646952664887,
          "durationMillis": 4873,
          "pauseDurationMillis": 0
        }
      ]
    }
  ]
hagay_bar
  • 43
  • 6

1 Answers1

0

i worked it a bit and was able to extract what i needed

export BUILD_NUMBER='72'
export STAGE1="CLEANUP WORKSTATION"

cat file.json | jq '.[] | select(.id==env.BUILD_NUMBER) | .stages | .[] | select(.name | contains(env.STAGE1)) | .durationMillis'
hagay_bar
  • 43
  • 6
  • You should avoid polluting your environment with `export`s of values you only need for access within a jq filter. In such cases, rather use the `--arg` option to import a value as a variable: `build_number=72; jq --arg bn "$build_number" '… | select(.id == $bn) | …' file.json`. You can use `--arg` multiple times for more variables. – pmf Mar 11 '22 at 00:37
  • for each jenkins session we export all needed vars to ENV and create a log file from it. we then use this key value log and ship it to ELK for statistics. – hagay_bar Mar 11 '22 at 09:40