Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get Log for each Jenkins pipeline stage

Anyone know how I can get the separate logs (for each pipeline stage) as the Blue Ocean shows. I need to attach them to Jira but I can not find them. Any idea?

enter image description here

like image 871
Alessandra Dias Avatar asked Nov 23 '18 09:11

Alessandra Dias


1 Answers

I'm doing the same thing with the global pipeline library I'm building. This is good for cases where you just want to email the logs of a particular failed stage. Here's how hope it helps. On the sample pipeline below a job named test is executed once (build #1)

Sample pipeline

    pipeline {
        agent any
        stages{
            stage("Compile") {
                steps {
                    script {
                        echo "Compiling..."
                    }
                }
            }
            stage("Test") {
                steps {
                    script {
                        echo "Testing..."
                    }
                }
            }
            stage("Build") {
                steps {
                    script {
                        echo "Building..."
                    }
                }
            }
        }
    }
    
  1. Access the API to see execution details. Notice that each object of this JSON includes the attributes id and result. http://localhost:8080/blue/rest/organizations/jenkins/pipelines/test/runs/1/nodes/

    [
        {
            *snip*
            "actions": [],
            "displayDescription": null,
            "displayName": "Compile",
            "durationInMillis": 341,
            "id": "6",
            "input": null,
            "result": "SUCCESS",
            "startTime": "2018-11-24T18:14:16.196+0800",
            "state": "FINISHED",
            "type": "STAGE",
            "causeOfBlockage": null,
            "edges": [
            {
                "_class": "io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                "id": "15",
                "type": "STAGE"
            }
            ],
            "firstParent": null,
            "restartable": true
        },
        {
            *snip*
            "actions": [],
            "displayDescription": null,
            "displayName": "Test",
            "durationInMillis": 246,
            "id": "15",
            "input": null,
            "result": "SUCCESS",
            "startTime": "2018-11-24T18:14:16.693+0800",
            "state": "FINISHED",
            "type": "STAGE",
            "causeOfBlockage": null,
            "edges": [
            {
                "_class": "io.jenkins.blueocean.rest.impl.pipeline.PipelineNodeImpl$EdgeImpl",
                "id": "24",
                "type": "STAGE"
            }
            ],
            "firstParent": "6",
            "restartable": true
        },
        {
            *snip*
            "actions": [],
            "displayDescription": null,
            "displayName": "Build",
            "durationInMillis": 270,
            "id": "24",
            "input": null,
            "result": "SUCCESS",
            "startTime": "2018-11-24T18:14:17.188+0800",
            "state": "FINISHED",
            "type": "STAGE",
            "causeOfBlockage": null,
            "edges": [],
            "firstParent": "15",
            "restartable": true
        }
    ]
    
  2. Use result to check the status of a stage (SUCCESS, FAILED, ABORTED, etc...)

  3. Use id to get into a particular stage, for this example the logs of Test stage which has an id of 15.

    http://localhost:8080/blue/rest/organizations/jenkins/pipelines/test/runs/1/nodes/15/log/

    Testing...
    
like image 83
Quirino Gervacio Avatar answered Oct 21 '22 02:10

Quirino Gervacio