1. 1강 - 젠킨스(Jenkins) 이해 | T아카데미
https://www.youtube.com/watch?v=JPDKLgX5bRg
1. CI/CD란 무엇인가
- CI : 여러 개발자들의 코드베이스를 계속해서 통합하는 것 >
- CD : 코드베이스가 항상 배포가능한 상태를 유지하는 것 / 코드베이스를 사용가능한 환경에 배포하는 것을 자동화 함
2. 젠킨스의 기본 개념과 동작 방식
- Java Runtime위에서 동작하는 자동화 서버
- 빌드, 테스트, 배포 등 모든 것을 자동화 해주는 자동화 서버
2-1. 젠킨스의 기본 개념과 동작 방식 - 플러그인
1) Credentials Plugin
: 젠킨스는 서버이기 때문에 배포에 필요한 각종 리소스에 접근하기 위해서는 여러가지 중요 정보들을 저장하고 있어야 한다. (계정정보를 젠킨스에 적어도 되는지 의구심이 들 수 있는데, 젠킨스는 자체적으로 RSA암호화를 사용해 공개키 토큰을 발행해 사용하므로 안전하다고 볼 수 있다.
)
2) Pipeline Plugin
: 파이프라인을 관리할 수 있게 해주는 플러그인
3) Docker plugin and Docker Pipeline
: 도커 에이전트를 사용하고 젠킨스에서 도커를 사용하기 위함
2-2. 젠킨스의 기본 개념과 동작 방식 - 파이프라인
파이프라인이란?
CI/CD파이프라인을 젠킨스에 구현하기 위한 일련의 플러그인들의 집합이자 구성
즉, 여러 플러그인들을 이 파이프라인에서 용도에 맞게 사용하고 정의함으로써 파이프라인을 통해 서비스가 배포됨.
Pipeline DSL(Domain Specific Language)로 작성
두가지 형태의 파이프라인 신택스(Pipeline syntax)가 존재(Declarative, Scripted Pipeline)
(Declarative Pipeline syntax가 최신 버전 + 가독성 좋다고 함.)
2-3. 젠킨스의 기본 개념과 동작 방식 - 파이프라인 신택스
Sections
1) Agent section
: 젠킨스가 어떤 일을 할 것인지, 여러 slave node를 두고 일을 시킬 수 있다.
젠킨스 노드관리에서 새로 노드를 띄우거나 혹은 docker이미지 등을 통해서 처리할 수 있음
2) Post section
: 스테이지가 끝난 이후의 결과에 따른 후속조치
예) 정상작동 시 성공 이메일, 비정상 작동 시 중단 또는 건너뛰기 등..
3) Stages section
: 어떤 일을 처리할지 stage를 정의 ( = 카테고리)
예) 빌드 스테이지, 프론트엔드 배포 스테이지..
3-1) Declaratives
각 스테이지 안에서 어떤 일할지 정의하는 것
- Environment
: 어떤 pipeline이나 stage scope의 환경변수 설정
- parameters
: 파이프라인 실행 시 파라미터 받음
- trigger
: 어떤 형태로 트리거 되는가
- when
: 언제 실행되는가
Stage, options 등의 Declarative가 있음
4) Steps section
: 한 스테이지 안에서의 단계로 일련의 스텝을 보여줌
2. 2강 - 젠킨스 개발환경 및 CI/CD 기본 동작 이해
3. 개발 환경 및 CI/CD의 기본 동작 이해 - 개발환경의 종류
1) 개발자가 개발을 하는 Local환경 (자신의 workspace안에서 일을 함)
2) 개발자들끼리 개발 내용에 대한 통합 테스트를 하는 Development환경
3) 개발 후 QA엔지니어 및 내부 사용자들이 사용해보기 위한 QA환경
4) 실제 유저가 사용하는 Production환경
3. 개발 환경 및 CI/CD의 기본 동작 이해 - 여러 배포 환경의 관리
"인프라를 모듈화 해 어떤 것이 변수인지 잘 설정하고 잘 설계할 것"
: app_env처럼 현재 배포하고자 하는 것이 어떤 환경인지 설정하고 앱 내에서 사용하는 다양한 변수들을 app_env에 맞게 잘 가져다 쓰는 것이 핵심
서비스 내부의 변수 뿐만 아니라 클라우드 리소스를 많이 활용해서 개발하는 요즘에는 클라우드 리소스 내에서 인프라별 키 관리가 매우 중요해서 aws system manager의 parameter store와 같은 키 관리 서비스는 쓰는 것도 좋다.
(https://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/services-parameter-store.html)
- dev와 prod는 aws서버도 따로, aws계정도 따로 생성하여 사용 => 물리적 분리
3. 3강 - 젠킨스 CI/CD 파이프라인 구성 실습
4. 4강 - 젠킨스 CI/CD 파이프라인 구성 실습(2)