자유 스타일 프로젝트를 사용하는 경우 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'
}
}
}
}