❗️ 주관적으로 작성한 것이니 정확하지 않습니다
젠킨스에 대해 알아보기 전에
- CI => continous Intergration. 여러 명의 작업 본을 통합한다. 데브 브랜치, 릴리즈 브랜치, 마스터 브랜치에 merge가 되면 자동으로 빌드를 시켜주는 것. 테스트 코드 실행까지
- CD => continous delivery. 사용자에게 지속적으로 서비스를 배달한다. 코드가 항상 배포 가능한 상태를 유지하는 것
- CD => continous deployment. 코드를 사용자가 사용 가능한 환경(운영 환경)에 배포하는 것을 자동화 하는 것
젠킨스란?
- 젠킨스 => java runtime 위에서 동작하는 자동화 서버, 서버 환경만 구성하고 나머지는 플러그인을 설치해서 사용.
- 빌드, 테스트, 배포 등 모든 것을 해주는 자동화 서버.
- 난 개발만 할테니 귀찮은 건 젠킨스가 다 해라를 목표로 한다는데 그 귀찮을 걸 시키기 위한 세팅들이 귀찮.....
- 다양한 플러그인들을 설치해서 각종 자동화 작업들을 처리 해 줄 수 있다고 함. 500개 이상의 플러그인이 있다고 하는데 사용해 본 플러그인은 4~5개 정도?
- 자동화 작업의 순서들의 집합인 pipeline을 통해 ci/cd 파이프라인을 구축 => pipeline 정보를 젠킨스 문성에 작성해 두면 그 문서대로 해준다
- 빌드를 해서 뭐 exe 파일을 생성하든 apk 파일을 생성하든 class 파일을 생성하든 dll 파일을 생성하든 빌드해야 하는데 자주하면 시간도 걸리고 귀찮음. 그래서 github 뭐 이런거랑 연동해서 push만 하면 빌드되게 설정해주고 젠킨스가 빌드를 실행하는 동안 난 다른 일을 더 한다거나 논다거나 할 수 있음
- 도커 이미지를 만들고 그 이미지를 ecr에 업로드하고 k8s 배포 명령어 만들고 뭐 이런 작업을 해줄 수 있게 세팅이나 파일을 만들어 두면 젠킨스가 해준다. 젠킨스가 설치된 컴터(서버)에서 하는거다.
- 젠킨스의 아이콘 그림이 집사다. 집사한테 귀찮을 걸 요청하고 집사가 해준다라는 컨셉. 근데 그 집사가 초짜 집사면 일을 알려줘 알아서하지...그 초보 집사한테 일을 가르치는게 러닝커브라 생각된다
플러그인과 그 종류
- Credentials Plugin
젠킨스는 그냥 서버 프로그램이기 때문에 배포에 필요한 각종 리소스(클라우드 리소스) 등에 접근하기 위해 여러 중요 정보들을 저장해주는 플러그인
AWS token, git access token 등등의 정보를 안전하게 저장해준다
- Docker Plugin & Docker pipeline
docker agent를 사용하고 젠킨스에 도커를 사용하기 위한 플러그인 => 도커 빌드 등을 해주는 플러그인.
- 파이프라인
ci/cd 파이프라인을 구현하기 위한 일련의 젠킨스 플러그인들의 집합이자 구성
즉, 여러 플러그인들을 이 파이프라인에서 용도에 맞게 사용하고 정의함으로써 파이프라인을 통해서 서비스가 배포됨 => 젠킨스에 여러 플러그인들을 설치하고 그중에서 사용하고 싶은 플러그인들만 파이프라인에 정의해서 사용함. Pipeline DSL(Domain Specific Language)로 작성.
그니까 플러그인이라는 재료들을 준비해 놓고 그 재료들로 만들 음식의 레시피를 만들어 두는게 파이프라인 문서이다.
참고