학습일지/workflows

Complete Jenkins Pipeline Tutorial | Jenkinsfile explained 정리

inspirit941 2022. 4. 10. 13:29
반응형

https://youtu.be/7KCS70sCoK0?si=9hFFX18UXpCPfres 

Jenkinsfile

스크린샷 2022-04-10 오전 10 17 09스크린샷 2022-04-10 오전 9 53 17

Jenkins 파이프라인의 종류는 크게 두 가지.

  • script : groovy engine으로 직접 실행. node {} 명령어를 사용하며, groovy를 알아야 쓸 수 있음
  • declarative : 간단하게 파이프라인을 생성할 수 있지만 script에 비해 제약이 있는 편.

스크린샷 2022-04-10 오전 9 56 27

post 명령어

스크린샷 2022-04-10 오전 10 27 58

  • 파이프라인 맨 끝에서 실행할 수 있도록 하는 명령어.
    • always: 성공 실패여부 관계없이 반드시 실행
    • success : 성공했을 경우 실행
    • failure : 실패했을 경우 실행

Define Conditional / When, Environment Variable

스크린샷 2022-04-10 오전 10 35 05

when { expression { }} 형태로 사용.

  • BRANCH_NAME 또는 env.BRANCH_NAME 으로 환경변수 호출이 가능하며, CODE_CHNAGE 같은 custom 변수의 경우 getGitChange() 처럼 메소드로 정의해 사용할 수 있음.

스크린샷 2022-04-10 오전 11 23 42

  • 기본적으로 제공해주는 환경변수는 url로 확인 가능함.
  • environment {} 안에 환경변수를 정의하면, 모든 stage에서 호출 가능함.
  • 환경변수를 steps 안에서 호출하려면 %{변수명} 을 붙이면 되고, 이 경우 반드시 Double Quote를 써야 한다. (groovy script 문법)
  • credentials 의 경우 jenkins gui로 정의하거나, credential bind 플러그인을 설정해서 binding할 수 있다.

스크린샷 2022-04-10 오전 11 27 09

특정 stage에서만 사용할 환경변수라면, 굳이 environment{}로 정의하지 않고 stage 내부에서 불러올 수도 있다.

  • usernamePassword() 메소드인 이유는, jenkins credential의 타입이 username / password 였기 때문.
  • 변수명 할당은 아래 스크린샷과 같이 설정할 수 있다.

스크린샷 2022-04-10 오전 11 32 27스크린샷 2022-04-10 오전 11 32 04

플러그인 두 개가 필요함

  • credentials: jenkins 내부 파이프라인에서 credential 값을 불러올 수 있도록 해주는 플러그인.
  • credential binding: jenkins 내부에서 환경변수로 사용할 수 있게 해주는 플러그인.

tools

스크린샷 2022-04-10 오전 11 36 24

  • 빌드에 필요한 tool: gradle, maven, yarn 같은 것들을 세팅하는 방법.
  • 2020년 기준으로 젠킨스에서 제공하는 빌드툴은 gradle, maven, jdk + docker까지 네 개. node에 필요한 빌드툴은 다른 방법을 사용해야 한다.

jenkins의 configurationTool을 확인해보면 정의된 buildTools (gradle, maven, jdk)을 확인할 수 있는데, 거기 정의된 Name을 tools{} 에 넣어준다.

  • 아래 예시의 경우 configurationTool에서 maven의 이름이 Maven으로 정의되어 있었으므로 그대로 넣어 줌.

스크린샷 2022-04-10 오전 11 39 53

Parameters

external parameter를 정의하려면 parameter {} 를 넣어주면 된다.

스크린샷 2022-04-10 오전 11 41 56

파이프라인에서 사용하는 방법

  1. when + expression으로 조건절 지정

스크린샷 2022-04-10 오전 11 41 56

  1. stage에 파라미터로 적용

스크린샷 2022-04-10 오전 11 43 17

파라미터를 추가하면, jenkins ui에 'build with parameters' 가 표시된다.

External Groovy script

  1. groovy script를 정의한다.
    스크린샷 2022-04-10 오후 12 46 09
  2. 최상단에 def gv로 변수를 정의하고, init 스텝에서 gv에 'script.groovy'라는 파일명을 지정한다.

스크린샷 2022-04-10 오후 12 48 02

  1. groovy 스크립트에 지정된 메소드명은 그대로 호출할 수 있다. 또한 jenkins의 파라미터는 groovy에 정의해도 그대로 반영된다.
    스크린샷 2022-04-10 오후 12 46 24

Configuring Other Build tools in jenkins

스크린샷 2022-04-10 오후 12 52 55스크린샷 2022-04-10 오후 12 52 15

nodejs의 경우 플러그인에서 nodejs를 설치하고, gui에서 node 버전과 Name을 지정한다. 이 Name이 jenkinsfile에 사용됨.

스크린샷 2022-04-10 오후 1 10 04

  • 위 에시의 nodejs()로 정의된 부분이 Wrapper. 괄호 안의 파라미터가 gui에서 nodejs Name 세팅한 부분임.

스크린샷 2022-04-10 오후 1 11 37

  • tool에 정의해 사용할 수도 있으나, 이 경우 gradle, maven, jdk만 지원됨.
반응형