1. ci/ci 기본 개념
- continuous integration : 여러 개발자들의 코드베이스를 계속해서 통합함.
- continuous delivery : 서비스를 배달함. 코드 베이스가 항상 배포 가능한 상태로 유지하는 것.
- continuous deployment : 코드베이스를 사용자가 사용가능한 환경으로 배포하는것을 자동화함.
- 코드가 지속적으로 합쳐짐 : 개발자와 사용자 사이의 격차를 없임
- 이러한 과정에는 코드 빌드+테스트+배포 가 포함됨.
- ci/cd가 없으면 코드가 통합이 안돼어 있어서 여러 개발자가 개발한것을 합칠때 문제가 됨.
- 가능한 코드를 만들자마자 바로바로 합치자는 것.
- ci : 가능한 최대한 많이 빨리 내 코드를 코드 베이스에 안착시킴
- cd :
2. Jenkins의 기본 개념과 동작 방식
- 이러한 귀찮은것들을 대신해주는것이 젠킨스
- java runtime 위에서 동작한다. 아니면 도커에서 하든가
- 다양한 플러그인을 활용해서 각종 자동화 작업을 처리함. 하나의 플러그인으로 모듈화함.
- 일련의 “자동화 작업의 순서들의 집합”인 파이프라인을 통해 ci/cd 파이프라인을 구축함.
- 두가지의 pipeline syntax가 존재 : declarative, scripted —> 얼리페이에서는 declarative pipeline syntax를 사용함.
- 대표적인 플러그인
a. Credentials plugin : 젠킨스는 단지 서버임. 배포에 필요한 각종 리소스에 접근하기 위해서는 중요 정보들을 저장해야 한다.
이러한 중요 정보(was token, git access token 등등)을 저장해주는 플러그인.
b. Pipeline plugin : 파이프라인이란 ci/cd 파이프라인을 젠킨스에 구현하기 위한 “일련의 플러그인의 집합이자 구성”,
여러 플러그인들을 이 파이프라인에서 용도에 맞게 사용하고 정의함으로써 파이프라인을 통해 서비스가 배포됨.
일종의 작업 명세서/레시피.
1) section : 대 카테고리, 누가 어떤 일을 할 것인가.
- agent section : 여러 slave node를 두고 일을 시킬 수 있는데, 이처럼 어떤 젠킨스가 일을 하게 할것인지를 지정한다.
- post section : 각 순서(stage)마다 이후의 결과에 따라 후속 조치를 할 수 있다.(성공시에 성공 이메일 등등)
- stage section : 어떤 일들을 처리할 것인지 일련의 stage(순서)를 정의함.
- step section : 한 스테이지 안에서의 단계로, 일련의 스텝을 보여준다.
2) declarative : 각 스테이지 안에서 어떤 일을 처리할 것인지를 정의함.
- when : 언제 실행되는가
- trigger : 어떤 형태로 트리거가 되는가, 이 파이프라인이 어떤 주기로 실행이 되는가
- environment : 환경 변수
3) steps : 실행 가능한 여러 작업들, 플러그인을 설치하면 그 플러그인에 맞는 스텝들을 쓸 수 있다.
c. Docker plugin