본문 바로가기
Develop/etc

[Jenkins] PipeLine Syntax

by 연로그 2021. 4. 19.
반응형

본 글은 Pipeline Syntax 중에서도 Declarative 방식에 대한 문법만 기술한다.

(Pipeline Syntax의 종류는 yeonyeon.tistory.com/86 의 'Jenkins 문법의 종류에 대해서' 부분에 간단히 기술했다.)

 

Declarative Pipeline

  • Jenkins Pipeline에 비해 최근에 추가됨
  • Pipeline 하위 시스템 위에서 더 간단한 문법을 제공한다.
  • 유효한 syntax들은 모두 pipeline { } 블록 안에 존재한다.
  • 블록은 Sections, Directives, Steps, assignment statements로 구성되어야 한다.
  • pipeline { } 블록 내에서 코드 최대 크기를 제한하는 문제가 있다. (Scripted pipeline은 제한 X)

 

Declarative Pipeline의 최소한의 필수 구조는 다음과 같다.

pipeline 
{
    agent any
    stages 
    {
        stage ('stage name') 
        {
            steps {
                ...
            }       
        }
    }
}

 

agent

  • Jenkins 환경에서 전체 Pipeline이나 특정 stage가 실행될 위치를 지정
  • pipeline { } 블록 내의 최상단에 정의
  • 각 stage { } 블록의 최상단에도 정의가 가능하지만, 필수 사항은 아님
  • agent any: 사용 가능한 agent.
  • agent none: global agent는 설정 x. 각 stage에 설정 필요
  • agent { label '..' }: 특정 label 명으로 된 environment로 설정
  • agent { node { ... } }
  • 이 외에도 docker, dockerfile, kubernetes 등 다양한 옵션이 있다.

 

stages

  • 하나 이상의 stage를 포함
  • Pipeline이 말하는 work의 대부분이 위치하는 곳

 

steps

  • Declarative, Scripted 모두에서 기본 구성 요소 역할
  • stage 지시문에서 실행될 하나 이상의 steps 정의

 

참고로 pipeline syntax들은 완벽히 외우고 있을 필요 없다.

 

프로젝트구성에서 Pipeline script를 입력할 때 하단의 Pipeline Syntax를 누른 뒤에 들어가지는 홈페이지에서,

값 입력하고 Generate Pipeline Script 버튼을 누르면  pipeline script가 자동으로 작성되므로 복붙하면 된다.

 

이 외 기타 자세한 문법은 포스트 하단의 참조 1에 자세히 나와있다.

 

알아두면 좋은 것

#1 Pipeline은 기본적으로 순차 실행이다.

- stage를 실행하다 오류가 생긴 경우, 그 뒤의 stage들은 실행하지 않는다.

-> parallel { } 블록 안에 stage 블록들을 넣으면 병렬 수행이 가능하다.

 

#2 maven, gradle, jdk 삽입하는 방법

-> tools { } 라는 자동 설치나 PATH에 추가할 도구를 정의할 수 있는 블록이 있다.

  - 단, agent none으로 설정된 경우에는 무시된다.

pipeline {
    agent any
    tools {
        maven 'apache-maven-3.0.1' 
    }
    ...
}

 

#3 값을 직접 입력하고 싶을 때.

- 기본적으로 argument가 없는 형식으로 동작되지만 값을 직접 입력하고 싶은 경우가 있다.

-> 이 때는 input { } 블록을 이용하면 된다.

  - 만약 입력 단계가 오면 잠시 일시 중지 되었다가, 입력을 받은 후에 나머지가 실행된다.

  - 입력한 parameters는 input을 사용한 stage에서 계속 사용 가능하다.


참조

1) Jenkins 공식 홈페이지: www.jenkins.io/doc/book/pipeline/syntax/#declarative-pipeline

2) parallel 블록 예시: oingdaddy.tistory.com/54

반응형

'Develop > etc' 카테고리의 다른 글

[Redmine] 설치부터 Eclipse 연동까지  (0) 2021.04.28
[Jenkins] Pipeline 이용하기 (with JUnit, SonarQube)  (0) 2021.04.26
[Gradle] gradle이란?  (0) 2021.04.16
[Jenkins] JUnit과 연동  (0) 2021.04.06
[Jenkins] Sonarqube와 연동  (2) 2021.04.05