Как получить продолжительность ветвей и этапов конвейера Jenkins

Учитывая конвейер Jenkins, как мы можем рассчитать продолжительность определенных ветвей или этапов, которые уже завершены?

Используя класс Groovy Date, мы, безусловно, могли бы хранить время начала и окончания в заданных точках конвейера и вычислять их разницу. Но это загромождает код и кажется излишним, поскольку можно предположить, что временная информация уже существует в графе узлов конвейера. Например, плагин Blue Ocean отображает продолжительность частей конвейера (например, если вы наводите курсор на кнопку этапа).

Было бы предпочтительнее, если бы мы могли получать информацию о времени конвейера с помощью API Jenkins без необходимости вставлять код в этапы, как в следующем наивном примере:

pipeline {
    agent any
    
    stages {
        stage('A') {
            stages {
                stage('A1') {
                    steps {
                        script {                                     // unwanted script block
                            def startDate = new Date()               // unwanted code
                            sleep 1
                            durationA1 = ( new Date() ) - startDate  // unwanted code
                        }
                    }
                }
                stage('A2') {
                    steps {
                        script {                                     // unwanted script block
                            def startDate = new Date()               // unwanted code
                            sleep 1
                            durationA2 = ( new Date() ) - startDate  // unwanted code
                        }
                    }
                }
            }
        }
    }
    post {
        always {
            script {
                echo "Stage A1 duration: $durationA1"
                echo "Stage A2 duration: $durationA2"
                echo "Stage A duration: ${durationA1 + durationA2}"
            }
        }
    }
}

person zett42    schedule 04.11.2020    source источник