[DevOps] Jenkins란

홍예진·2023년 1월 24일
0

DevOps

목록 보기
3/4

들어가기전 보면 좋은 강의

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
    1. 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

  • Steps 내부는 여러가지 스텝들로 구성
  • 여러 작업들을 실행 가능
  • 플러그인을 깔면 사용할 수 있는 스텝들이 생겨남
  • 플러그인별 스텝 종류들 https://www.jenkins.io/doc/pipeline/steps/

Jenkins 설치하는 법

#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

# Install java, docker, git
sudo yum install -y java-1.8.0-openjdk jenkins git docker
# 자바 버전 8로 설정
alternatives --config java
service jenkins start

참고

https://ict-nroo.tistory.com/31
https://www.youtube.com/watch?v=JPDKLgX5bRg

profile
기록용 공부용 개발 블로그

0개의 댓글