들어가기전 보면 좋은 강의
CI/CD


Jenkins란
- CI(Continuous Integration, 지속적 통합) 툴
- Java Runtime Environment에서 동작
- 다양한 플러그인들을 활용해서 각종 자동화 작업을 처리할 수 있음
- 일련의 자동화 작업의 순서인 Pipeline을 통해 CI/CD 파이프라인을 구축함
- 정기적인 빌드, 서브버전, git과 같은 버전 관리 시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정 가능.
이점
코드의 변경과 함께 이뤄지는 자동화된 빌드와 테스트 작업들의 이점
- 프로젝트 표준 컴파일 환경에서의 컴파일 오류 검출
- 자동화 테스트 수행
- 정적 코드 분석에 의한 코딩 규약 준수 여부 체크
- 프로파일링 툴을 이용한 소스 변경에 따른 성능 변화 감시
- 결합 테스트 환경에 대한 배포 작업
각종 배치 작업의 간략화
- DB 구축, 어플리케이션 서버로의 Deploy, 라이브러리 릴리즈와 같이 이전에 CLI로 실행되던 작업들이 웹 인터페이스로 손쉽게 가능
Build 자동화 확립
- maven, gradle과 같은 빌드 툴과 연동하여 빌드 자동화를 통해 프로젝트 효율성을 높일 수 있다.
자동화 테스트
- Subversion이나 Git과 같은 버전 관리 시스템과 연동하여 코드 변경을 감지, 자동화 테스트를 수행.
코드 표준 준수 여부 검사
빌드 파이프라인 구성
- ex) 도메인 -> 서비스 -> UI
- 각 레이어의 참조 관계에 따라 순차적으로 빌드 진행이 필요한 경우 빌드 파이프라인 구성이 필요.
- 젠킨스는 이를 간단히 할 수 있으며, 스크립트를 통해서 매우 복잡한 제어까지도 가능
젠킨스 기본 개념
Pipeline
- CI/CD 파이프라인을 젠킨스에 구현하기 위한 일련의 플러그인의 집합이자 구성
- 두가지 형태의 Pipeline syntax가 존재
1. Declarative Pipeline syntax
- Scripted Pipeline
Pipeline Syntax - Sections
Agent section
- 젠킨스는 많은 일을 해야한다. 여러 slave node를 두고 일을 시킬 수 있다.
- 젠킨스 노드 관리에서 새로 노드를 띄우거나 혹은 docker 이미지 등을 통해서 처리할 수 있음.
Post section
- 스테이지가 끝난 이후의 결과에 따라서 후속 조치를 취할 수 있다.
- success, failure, always, cleanup
Stages section
- 어떤 일들을 처리할 건지 일련의 빌드, FE 배포 등과 같은 stage를 정의. 일종의 카테고리
Steps section
- 한 스테이지 안에서의 단계로 일련의 스텝을 보여줌.
Pipeline Syntax - Declaratives
각 Stage안에서 어떤 일을 할 것인지를 정의하는 것이 Declaratives
Environment
- 어떤 pipeline이나 stage scope의 환경 변수 설정

Parameter
Triggers
- 어떤 형태로 트리거 되는가
- ex) 소스코드를 3분에 한번 긁어온다.
When
- 언제 실행되는가

- production 환경에서만 해야하는 일이 있는 예시
- 땡겨온 브랜치가 production이고 enviroment가 prod 일때만 일을 해~
Steps
Jenkins 설치하는 법
sudo wget -O /etc/yum.repos.d/jenkins.repo
http://pkg.jenkins.io/redhat/jenkins.repo&&sudo rmp --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo yum install -y java-1.8.0-openjdk jenkins git docker
alternatives --config java
service jenkins start
참고
https://ict-nroo.tistory.com/31
https://www.youtube.com/watch?v=JPDKLgX5bRg