[jenkins] Jenkins Pipeline에 시간 초과 단계를 추가하는 방법

자유 스타일 프로젝트를 사용하는 경우 20 분 후에 완료되지 않으면 빌드가 중단되도록 설정할 수 있습니다. Jenkins Multi Branch Pipeline 프로젝트로 어떻게 가능합니까?



답변

제한 시간 단계를 사용할 수 있습니다 .

timeout(20) {
  node {
    sh 'foo'
  }
}

MINUTESTimeUnit 이외 의 다른 값 이 필요한 경우 인수를 제공 할 수 있습니다 .unit

timeout(time: 20, unit: 'SECONDS') {

2018 년 8 월 수정 : 요즘에는 더 일반적인 선언적 파이프 라인 (최상위 pipeline구조 에서 쉽게 인식됨 )을 사용 options하여 다른 수준 (전체 파이프 라인 또는 단계 당)을 사용하여 시간 제한을 지정할 수도 있습니다 .

pipeline {
  options {
      timeout(time: 1, unit: 'HOURS')
  }
  stages { .. }
  // ..
}

그래도 선언적 파이프 라인의 단일 단계에 제한 시간을 적용하려는 경우 위에서 설명한대로 사용할 수 있습니다.


답변

A에 대한 선언적 파이프 라인 그것을 사용하는 adviced되는 타임 아웃 단계 에서 옵션 섹션을 .

정해진 시간 제한을 사용하여 블록 내부의 코드를 실행합니다. 시간 제한에 도달하면 예외 (org.jenkinsci.plugins.workflow.steps.FlowInterruptedException)가 발생하여 빌드가 중단됩니다 (어떻게 든 포착 및 처리되지 않는 한). 단위는 선택 사항이지만 기본값은 분입니다.

시간 초과 단계에는 구성 할 수있는 3 개의 매개 변수 가 있습니다.

  • 시간 (필수, 정수)

    • 단위가 분 단위로 지정되지 않은 경우 제한 시간의 양
  • 활동 (선택 사항, 부울)

    • 절대 기간 대신이 블록에 대한 로그에 활동이 없으면 시간이 초과됩니다.
  • 단위 (선택 사항, 값 : NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS)

    • 시간 단위 , 기본값은 MINUTES입니다.

예 :

timeout(time: 10) // would lead to a timeout of 10 minutes (MINUTES is default value)
timeout(time: 10, unit: 'SECONDS') // a 10 seconds timeout
timeout(time: 10, activity: false, unit: 'MILLISECONDS')

공식 젠킨스 문서는 타임 아웃의 사용에 대한 아주 좋은 예제가 실려있다 :

pipeline {
    agent any
    options {
        timeout(time: 1, unit: 'HOURS')
    }
    stages {
        stage('Example') {
            steps {
                echo 'Hello World'
            }
        }
    }
}


답변