반응형
https://youtu.be/7KCS70sCoK0?si=9hFFX18UXpCPfres
Jenkinsfile
Jenkins 파이프라인의 종류는 크게 두 가지.
- script : groovy engine으로 직접 실행. node {} 명령어를 사용하며, groovy를 알아야 쓸 수 있음
- declarative : 간단하게 파이프라인을 생성할 수 있지만 script에 비해 제약이 있는 편.
post 명령어
- 파이프라인 맨 끝에서 실행할 수 있도록 하는 명령어.
- always: 성공 실패여부 관계없이 반드시 실행
- success : 성공했을 경우 실행
- failure : 실패했을 경우 실행
Define Conditional / When, Environment Variable
when { expression { }} 형태로 사용.
- BRANCH_NAME 또는 env.BRANCH_NAME 으로 환경변수 호출이 가능하며, CODE_CHNAGE 같은 custom 변수의 경우 getGitChange() 처럼 메소드로 정의해 사용할 수 있음.
- 기본적으로 제공해주는 환경변수는 url로 확인 가능함.
- environment {} 안에 환경변수를 정의하면, 모든 stage에서 호출 가능함.
- 환경변수를 steps 안에서 호출하려면 %{변수명} 을 붙이면 되고, 이 경우 반드시 Double Quote를 써야 한다. (groovy script 문법)
- credentials 의 경우 jenkins gui로 정의하거나, credential bind 플러그인을 설정해서 binding할 수 있다.
특정 stage에서만 사용할 환경변수라면, 굳이 environment{}로 정의하지 않고 stage 내부에서 불러올 수도 있다.
- usernamePassword() 메소드인 이유는, jenkins credential의 타입이 username / password 였기 때문.
- 변수명 할당은 아래 스크린샷과 같이 설정할 수 있다.
플러그인 두 개가 필요함
- credentials: jenkins 내부 파이프라인에서 credential 값을 불러올 수 있도록 해주는 플러그인.
- credential binding: jenkins 내부에서 환경변수로 사용할 수 있게 해주는 플러그인.
tools
- 빌드에 필요한 tool: gradle, maven, yarn 같은 것들을 세팅하는 방법.
- 2020년 기준으로 젠킨스에서 제공하는 빌드툴은 gradle, maven, jdk + docker까지 네 개. node에 필요한 빌드툴은 다른 방법을 사용해야 한다.
jenkins의 configurationTool을 확인해보면 정의된 buildTools (gradle, maven, jdk)을 확인할 수 있는데, 거기 정의된 Name을 tools{} 에 넣어준다.
- 아래 예시의 경우 configurationTool에서 maven의 이름이 Maven으로 정의되어 있었으므로 그대로 넣어 줌.
Parameters
external parameter를 정의하려면 parameter {} 를 넣어주면 된다.
파이프라인에서 사용하는 방법
- when + expression으로 조건절 지정
- stage에 파라미터로 적용
파라미터를 추가하면, jenkins ui에 'build with parameters' 가 표시된다.
External Groovy script
- groovy script를 정의한다.
- 최상단에 def gv로 변수를 정의하고, init 스텝에서 gv에 'script.groovy'라는 파일명을 지정한다.
- groovy 스크립트에 지정된 메소드명은 그대로 호출할 수 있다. 또한 jenkins의 파라미터는 groovy에 정의해도 그대로 반영된다.
Configuring Other Build tools in jenkins
nodejs의 경우 플러그인에서 nodejs를 설치하고, gui에서 node 버전과 Name을 지정한다. 이 Name이 jenkinsfile에 사용됨.
- 위 에시의 nodejs()로 정의된 부분이 Wrapper. 괄호 안의 파라미터가 gui에서 nodejs Name 세팅한 부분임.
- tool에 정의해 사용할 수도 있으나, 이 경우 gradle, maven, jdk만 지원됨.
반응형
'학습일지 > architecture' 카테고리의 다른 글
Kakao Tech Meet - 폭증하는 카카오톡 트래픽에 대처하는 방법 (0) | 2023.10.25 |
---|---|
KubeCon 2022 NA - How to build a Distributed System (0) | 2022.12.11 |
WoowaCon 2022 - 회원 시스템 이벤트 아키텍처로 구축하기 (0) | 2022.10.27 |
삼성SDS Techtonic 2021 - MSA Reference Platform (0) | 2021.11.25 |
IBM Cloud - CI & CD 개념정리 (0) | 2020.08.26 |