본문 바로가기
DevOps/Jenkins

[Jenkins] 기본 개념

by Haengsin 2022. 8. 23.
목차
  • CI/CD 파이프라인의 기본 개념
  • 기본적인 운영환경 (DEV, QA, PROD) 이 어떻게 구성되고 운영되는가
  • Jenkins 의 기본 개념.
  • Jenkins 를 통해 기본적인 배포 파이프라인을 직접 구축

 

CI/CD 파이프라인의 기본 개념

1. CI/CD 란 무엇인가

(1) Continuous Integration

- 여러 개발자들의 코드베이스를 계속해서 통합하는 것.

  • 기본적으로 코드.
  • 여러 명의 많은 개발자들이 코드 베이스를 계속해서 통합하는 것.

(2) Continuous Delivery

  • 내부 사용자(내부 QA, 마케터, 기획자)든, 사용자든 서비스를 지속적으로 배달.
  • 즉 코드 베이스가 항상 배포 가능한 상태를 유지하는 것을 의미.

(3) Continuous Deployment

- 코드베이스를 사용자가 사용 가능한 환경에 배포하는 것을 자동화.

  • 코드 작성
  • 배포 테스트
  • 자바나 컴파일해야 하는 언어는 컴파일 및 빌드
  • 도커로 배포 시 도커 이미지 만들기
  • 쿠버네티스의 롤링 업데이트
  • 이러한 과정들을 모두 자동화

 

즉, CI/CD 란 각각의 개발자들이 개발을 하는 개발 환경을 사용자가 사용 가능한 서비스로 전달하는 모든 과정을 지속 가능한 형태로 자동화.

 

이러한 과정에는 코드를 빌드하고, 테스트하고, 배포하는 활동이 있다.

Jenkins 의 기본 개념과 동작 방식

- Jenkins 는 Java Runtime Environment 에서 동작

   - (Jenkins 설치 전에 JRE를 서버에 깔거나, Jenkins를 Docker 로 사용하면 된다. )

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

- 다양한 플러그인들을 활용해서 각종 자동화 작업을 처리할 수 있음.

   - Credentials Plugin, Git Plugin, Pipeline 등. 

- 일련의 자동화 작업의 순서들의 집합인 Pipeline 을 통해 CI/CD 파이프라인을 구축함.

 

 

개발 환경 및 CI/CD 의 기본 동작 이해

[Plugin]

(1) Credential Plugin

- Jenkins 는 단지 서버일 뿐이기 때문에 배포에 필요한 각종 리소스에 접근하기 위해서는 여러가지 중요 정보들을 저장하고 있어야 한다. 

  • 리소스에는 클라우드 리소스 혹은 베어메탈에 대한 ssh 접근 등을 의미한다.
  • 베어메탈이란 어떠한 소프트웨어도 담겨 있지 않은 하드웨어를 가리킨다.
  • AWS token, Git access token, secret key, ssh(username, password)등의 정보들을 저장할 때 사용한다.
  • 위와 같이 중요한 정보들을 저장해주는 플러그인
  • 젠킨스는 실제 Production 환경에서는 Public 환경에 떠있는 게 아니라 Private Network에 떠있기 때문에 보안상 너무 걱정하지 않아도 된다.

(2) Git Plugin

-  jenkins에서 git에 대한 소스코드를 긁어와서 빌드할 수 있도록 도와줌.

 

(3) Pipeline Plugin

- 젠킨스의 핵심 기능인 Pipeline 을 관리할 수 있게 해주는 플러그인.

 

(4) Docker Plugin and Docker Pipeline

- Docker agent 를 사용하고 jenkins 에서 도커를 사용하기 위함.

 

[Pipeline]

  • 파이프라인이란 CI/CD 파이프라인을 젠킨스에 구현하기 위한 일련의 플로그인들의 집합이자 구성.
  • 즉, 여러 플러그인들을 이 파이프라인에서 용도에 맞게 사용하고 정의함으로써 파이프라인을 통해 서비스가 배포됨.
  • Pipeline DSL(Domain Specific Language) 로 작성.

즉, 파이프라인은 작업명세서 같은 느낌. 

  • 두 가지 형태의 Pipeline Syntax가 존재
  • 위 두 가지 형태중 최신이자 더 가독성 좋을 문법을 가진 Declarative Pipeline Syntax를 사용

 

Pipeline의 Section의 구성
  • Sections
    • Agent section
    • Post section
    • State section
    • Steps section
  • 위와 같이 4개의 Section으로 구성됨
  • Section은 가장 큰 개념이라고 생각하면 편함.

 

Pipeline의 Section 깊게 알아보기

 

Post section

  • 스테이지가 끝난 이후의 결과에 따라서 후속 조치를 취할 수 있다.
  • 각각의 단계별로 구별하면 다음과 같다.
  • 성공 시에 성공 이메일, 실패하면 중단 혹은 건너뛰기 등등, 작업 결과에 따른 행동을 취할 수 있다.

Stage Section

  • 어떤 일들을 처리할 것인지 일련의 stage를 정의한다.
  • 일종의 카테고리라고 보면 됨.
  • ex) 프론트엔드 배포를 위한 스테이지, 등

 

Steps Section

  • 한 스테이지 안에서의 단계로 일련의 스텝을 보여줌.
  • Steps 내부는 여러 가지 스텝들로 구성되며 여러 작업들을 실행 가능
  • 플러그인을 깔면 사용할 수 있는 스텝들이 생겨남
  • 빌드를 할 때 디렉터리를 옮겨서 빌드를 한다던가, 다른 플러그인을 깔아서 해당 플러그인의 메서드를 활용해서 일을 처리한다던지 하는 작업들을 할 수 있다.
  • 플러그인을 설치하면 쓸 수 있는 Steps들이 많아진다.

 

Declaratives 문법 알아보기

 

Declaratives

  • Environment, stage, options, parameters, triggers, when 등의 Declarative가 있음
  • 각 stage안에서 어떠한 일들을 할 것인지 정의하는 게 Declarative이다.

 

(1) Declaratives의 단계

 

Enviroment

Parameter

  • 파이프라인 실행 시 파라미터 받음

 

Triggers

  • 어떤 형태로 트리거 되는가?
  • 이 파이프라인이 어떤 주기로 실행이 되는가?

When

 

 

Jenkins 마지막 실습해보기

기본 실습 코드

  • pipeline => agent => stage=> step 순으로 작업이 세분화된다.
  • 위에서는 git에서 branch를 받아와서 디렉터리를 바꾸고 s3파일 업로드를 한 뒤 로그를 찍는 젠킨스 파이프라인의 예제이다.

 

젠킨스 설치하기

  • Jenkins를 설치하기 위해 yum으로 설치한다. 
  • 이후 Jenkins가 돌아가도록 하기 위해 필요한 목록들을 설치한다.

 

 

Reference

 

'DevOps > Jenkins' 카테고리의 다른 글

[Jenkins] 기본개념(2)  (0) 2022.09.05