如何检查同一分支上的上一个生成是否已启动<;3小时或>;使用Jenkins多分支管道3小时

如何检查同一分支上的上一个生成是否已启动<;3小时或>;使用Jenkins多分支管道3小时,jenkins,jenkins-pipeline,jenkins-groovy,jenkins-job-dsl,Jenkins,Jenkins Pipeline,Jenkins Groovy,Jenkins Job Dsl,我在Jenkins的特定分支上设置了一个多分支管道来触发Git merge上的管道,在那里我想有一个条件来检查同一分支上的上一个构建是否在3小时前启动以中止作业 有什么方法可以做到这一点吗?您可以按如下方式进行,这应该符合您的要求 import java.util.concurrent.TimeUnit pipeline { agent any stages { stage ("TestStage"){

我在Jenkins的特定分支上设置了一个多分支管道来触发Git merge上的管道,在那里我想有一个条件来检查同一分支上的上一个构建是否在3小时前启动以中止作业


有什么方法可以做到这一点吗?

您可以按如下方式进行,这应该符合您的要求

   import java.util.concurrent.TimeUnit
    pipeline {
        agent any
        stages {
            stage ("TestStage"){
                steps {
                    script {
                        def previousBuildStartTime = currentBuild.rawBuild.previousBuild.timestamp
                        def previousBuildStartTime_1 = previousBuildStartTime.getTimeInMillis()
                        def currentTime = System.currentTimeMillis()
                        def duration = TimeUnit.MILLISECONDS.toHours(currentTime - previousBuildStartTime_1)
                        echo "${currentTime} and ${previousBuildStartTime_1} and ${duration}"
                        catchError(buildResult: 'FAILURE', stageResult: 'ABORTED'){
                            if (duration < 3 || duration > 3){
                                echo "Less than 3 or greter than 3"
                                error("Aborting the stage")
                            }
                        }
                    }
                }
            }
        }
    }
method hudson.model.Run getPreviousBuild
method hudson.model.Run getTimestamp
method java.util.concurrent.TimeUnit toHours long
method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild
staticField java.util.concurrent.TimeUnit MILLISECONDS