젠킨스 파이프라인을 구성하기 위해서는 파이프라인 문법을 작성하는게 중요하다. 단순히 groovy에 대한 문법 뿐만아니라 jenkins에서 사용가능한 준비된 function들(혹은 block들)을 잘 익히고 사용하는 것이 매우 중요하다!(ex. timeout)
[개발이야기/Jenkins] - Jenkins Pipeline 개요 및 파이프라인 스크립트 예제 에서 간단한 파이프라인에 대한 개요를 확인 할 수 있다.
파이프라인 선언
파이프라인 선언은 간단하게 아래와 같은 block으로 이루어 진다. 모든 파이프라인은 반드시 pipeline block으로 감싸져야 한다. 파이프라인 안쪽의 statement, expression은 groovy 언어를 따른다.
pipeline {
/* insert Declarative Pipeline here */
}
- 파이프라인의 top level은 반드시 pipeline {} block 으로 이루어져야 한다.
- 세미콜론은 없음
섹션(Sections)
섹션은 파이프라인에서 하나이상의 스텝(Steps)이나 지시(Directives)로 이루어져 있다.
- agent : agent를 선택할 경우, 젠킨스 environment가 해당 agent로 설정된다.
필수여부 |
필수 |
파라미터 |
|
위치 |
|
- post : 특정 스테이지 이전 혹은 이후에 실행될 condition block
필수여부 |
선택 |
파라미터 |
|
위치 |
|
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
post {
always {
echo 'I will always say Hello again!'
}
}
}
- stages : 스테이지의 모음
필수여부 |
필수 |
위치 |
|
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
- steps : stage 내부 block에서 여러번 호출 될 수 있는 block
필수여부 |
필수 |
위치 |
|
Directives(파이프라인 configure)
- environment : key-value style로 파이프라인 내부에서 사용할 변수로 선언 가능하다.
필수여부 |
선택 |
위치 |
|
pipeline {
agent any
environment {
CC = 'clang'
}
stages {
stage('Example') {
environment {
AN_ACCESS_KEY = credentials('my-prefined-secret-text')
}
steps {
sh 'printenv'
}
}
}
}
- options : pipeline의 옵션을 선택적으로 집어 넣을 수 있다.
필수여부 |
선택 |
위치 |
|
- Available Options
- buildDiscarder
- Persist artifacts and console output for the specific number of recent Pipeline runs - disableConcurrentBuilds
- Disallow concurrent executions of the Pipeline. Can be useful for preventing simultaneous accesses to shared resources, etc - overrideIndexTriggers
- Allows overriding default treatment of branch indexing triggers - skipDefaultCheckout
- Skip checking out code from source control by default in the agent directive - skipStagesAfterUnstable
- Skip stages once the build status has gone to UNSTABLE - checkoutToSubdirectory
- Perform the automatic source control checkout in a subdirectory of the workspace - timeout
- Set a timeout period for the Pipeline run, after which Jenkins should abort the Pipeline - retry
- On failure, retry the entire Pipeline the specified number of times - timestamps
- Prepend all console output generated by the Pipeline run with the time at which the line was emitted
pipeline {
agent any
options {
timeout(time: 1, unit: 'HOURS')
}
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
- parameters : 유저로부터 트리거링 받은 변수들에 대해서 선언할 수 있다.
필수여부 |
선택 |
위치 |
|
- String
- A parameter of a string type, for example: parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') } - booleanParam
- A boolean parameter, for example: parameters { booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: '') }
- triggers : cront, pollSCM, upstream 등 여러방식으로 트리거를 구성할 수 있다.
ex. 새벽 3시마다 빌드하기
출처 : 젠킨스 공식 홈페이지
반응형
'DevOps > CI & CD' 카테고리의 다른 글
젠킨스에서 plugin 설치때 jenkins Caused by: javax.net.ssl.SSLException: Received fatal alert: protocol_version 에러가 날 경우 (399) | 2019.03.07 |
---|---|
Jenkins Pipeline 개요 및 파이프라인 스크립트 예제 (26) | 2018.03.09 |
젠킨스 오류 pending - Waiting for next available executor (0) | 2017.07.06 |