월루를 꿈꾸는 대학생

Jenkins와 CI/CD 개념 정리 본문

Server&Network

Jenkins와 CI/CD 개념 정리

하즈시 2022. 2. 16. 10:42
728x90

1. CI/CD란 무엇인가 ? 

 

- 지속적인 통합 / 지속적인 배포 

- 코드를 통합하고 서비스를 배달하며 배포하고 내부 소비자들에게도 지속적으로 코드를 작성하면 쓸 수 있는

사용자가 사용 가능한 환경에 배포하는 것을 자동화 

- 개발자의 코드가 지속적으로 배포되며 자동적으로 통합이 되어 개발자와 사용자 사이 격차를 없앰 

- 코드 작성 -> 빌드 -> 테스트 -> 배포 

 

ci가 필요한 이유 

- 10명의 개발자가 1주일 동안 개발... 통합시 조짐 커밋이 안 됨 시스템 자체가 하나로 합쳐지지 않고 여러군데에서 합치니까 문제가 발생 

- 모든 개발자가 안심하고 남탓하지 않기 위해서 사용하는 CI

 

CD가 필요한 이유

- 지속적으로 코드 작성 후 배포되도록 

- 사람 손으로 하면 실수가 생김 

 

 

2. Jenkins 기본 개념과 동작 방식 

https://www.moreagile.net/2014/01/jenkins-cicontinuous-integration-2.html

 

젠킨스란? 

- 개발자가 할 귀찮은 작업을 집사 = 젠킨스가 해줌

- Java runtime 위에서 동작하는 자동화 서버 = 설치되는 서버에 자바가  설치되어 있어야함 

- 빌드 , 테스트 , 배포 등 모든 것을 자동화 해주는 자동화 서버 

 

기본 개념

- java runtime enviroment 에서 동작

- 다양한 플러그인을 조합하여 자동화 작업을 처리 가능 

- 젠킨스는 빈 껍데기 그 안에 있는 플러그인을 조립하여 돌아가게 하는 것 = 파이프라인 

- 일련의 자동화 작업 순서들의 집합을 파이프라인이라고 하며 이를 통해 ci/cd 파이파라인 구축 

 

플러그인 

- 많음 

- 처음 추천 해주는 거 다 깔면 됨 

- git plugin 깃에 있는 거 사용할 때 

 

플러그인 종류

1) credentials plugin 

- 작업을 하려면 권한이 필요함 - 젠킨스에게 권한을 부여하는 플러그인 

- 시크릿키, ssh, access token 등 저장해줌 

- 서버에 개인 정보 저장해도 rsa 기반의 고유 id로 공개키 방식 암호화를 하기에 보안이 괜찮 

- 실제 프라이빗 네트워크에 사용하니까 괜찮음 

 

2) pipeline plugin

- 젠킨스 핵심 기능 파이프라인 관리 

 

파이프라인

- 플러그인의 집합이자 구성

- ci/cd 파이프라인을 구현하기 위한 일련의 플러그인 집합 = 작업 레시피

 

섹션

- 어떤 일을 할것이고 누가할 것인지 

 

Agent section

- 젠킨스 혼자 일처리 하기 빡세니까 일 같이 해주는 노예

- 어떤 노예에게 일 시킬지 정함

- 마스터할 떄 시킬지 노예 1 노예2에게 시킬지 agent에다가 어떤 놈한테 시킬지 지정 가능 

 

Post section

- 각 순서가 끝날 때 마다 결과에 따라 후속 조치를 함

- 콘솔 찍기, 슬랙에 메일 보내기 등 

- success , fail 등 

 

Stage section

- 어떤 일들을 처리할 지 일련의 일처리 순서 stage를 정의 = 카테고리 

 

Declaratives

- 각 스테이지마다 어떤 일 할지 정리

- 이 스테이지에서 어떤 환경변수 쓰고 어떤 파리미터 쓰고 어떤 형태로 트리거가 되고 언제 실행하는가 

- trigger ( 어떤 주기로 실행할 것인가 )

 

Steps

- 스탭 내부는 여러가지 스텝들로 구성 

- 여러 작업 실행 가능 

- 플러그인 마다 사용 가능한 스텝이 있음 

 

## 밑의 영상 22:30초 화면 참조 ###

 

젠킨스 설치 

1. yum 업뎃

2. 젠킨스 패키지 설치 

3. 자바와 git 설치 

 

 

참고 영상 

 

https://youtu.be/JPDKLgX5bRg

 

 

728x90

'Server&Network' 카테고리의 다른 글

power shell 참고 자료  (0) 2021.11.05
AI와 ML 그리고 DeepLearning  (0) 2021.10.18
리눅스 기초 구조 & 실습  (0) 2020.12.28
DNS 설정  (0) 2020.12.26
라즈베리파이 ssh 포트 번호 변경  (0) 2020.12.26