T academy _ Jenkins를 이용한 CI/CD 정리

2021. 9. 24. 17:27·Web/Jenkins 정리글

CI/CD란?

CI

  • Continuous Integration : 지속적인 통합
  • 여기서 통합은 코드의 통합을 의미한다. 여러 개발자들의 코드베이스를 계속해서 통합하는 것.

CD

  • Continuous Delivery : 지속적인 배달
  • 사용자에게 제품을 서비스를 지속적으로 배달한다는 것.
  • 코드베이스가 항상 배포가능한 상태를 유지하는 것이다.

CD

  • Continuous Deployment : 지속적인 배포
  • 코드베이스를 사용자가 사용가능한 환경에 배포하는 것을 자동화하는 것.

즉, CI/CD란 각각의 개발자들이 개발하는 개발 환경을 사용자가 사용 가능한 서비스로 전달하는 모든 과정을 지속 가능한 형태로 또 가능하다면 자동으로 해서 개발자와 사용자 사이의 격차를 없애는 것이다.

 

모든 과정 : 코드의 빌드, 테스트, 배포 하는 활동이 있다.

 

CI가 없다면?

10명의 개발자가 열심히 개발을 했다. 1주일 후 ... 전부 합치기 !

-> 이것을 합치는것이 쉬울까? merge에서 엄청나게 conflict가 발생할 것이 뻔하다. 또한 개별적으로 작동하던 기능도 합치고 나서 코드의 충돌들로 인해 정상적인 기능이 수행할 것이라고 보장할 수 없다.

 

CI의 사용목적!

-> 모든 개발자들이 안심하고 개발을 하기 위해서, 또 내 코드의 안녕을 위해서.

 

CD가 없다면?

백엔드 코드 개발 -> 프론트와 협업을 해야하기위해 배포를 하자 -> 버그 발생 재배포 -> 반복..

 

CD의 사용목적!

-> 10명의 개발자가 열심히 개발 -> 성공적으로 merge -> 배포 성공 보장

-> 내부 사용자 혹은 production 환경의 사용자에게 지속적이고 안정적으로 서비스를 제공할 수 있다.

 

젠킨스

Java Runtime 위에서 동작하는 자동화 서버

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

 

기본 개념

  • Java Runtime Environment에서 동작
  • 다양한 플러그인들을 활용해서 각종 자동화 작업을 처리할 수 있다.
  • 일련의 자동화 작업의 순서들의 집합인 Pipline을 통해 CI/CD 파이프라인을 구축한다.

 

Plugin

  • 정말 많은 플러그인이 존재
  • Git 플러그인, Credentials 플러그인, 도커 플러그인 등

Credentials Plugin

  • Jenkins는 단지 서버일 뿐이므로 배포에 필요한 각종 리소스 (클라우드 리소스, ssh 접근 등)에 접근하기 위해서는 여러가지 중요한 정보들을 저장하고 있어야 한다. 
  • 이런 중요한 정보들을 저장해주는 플러그인이다. (AWS token, Git Access Token, Username, Password, Secret Key, etc..)

Docker plugin

  • jenkins에서 도커를 사용하기 위해 사용

 

Pipeline

파이프라인이란 CI/CD 파이프라인을 젠킨스에 구현하기 위한 일련의 플러그인들의 집합이자 구성

  • 여러 플러그인들을 이 파이프라인에서 용도에 맞게 사용하고 정의함으로써 파이프라인을 통해 서비스가 배포된다.
  • Pipline DSL (domain specific language)로 작성
  • 작업 명세서 개념

 

Pipline Syntax

Agent Section

  • 일을 수행할 slave node들을 설정한다.

Post Section

  • 스테이지가 끝난 이후의 결과에 따라서 후속조치를 취할 수 있다. (email, slack 등으로 알림 etc..)

Stages Section

  • 어떤 일들을 처리할 건지 일련의 stage를 정의한다.

Steps Section

  • 한 stage안에서의 단계로 일련의 step을 보여준다.

Declaratives

  • Environment, stage, options, parameters, triggers, when 등의 declarative가 있다.
  • Environment : 어떤 pipline이나 stage scope의 환경 변수 설정
  • parameter : 파이프라인 실행 시 파리미터 받음
  • Trigger : 어떤 형태로 트리거 되는가
  • When : 언제 실행되는가
반응형
저작자표시 (새창열림)

'Web > Jenkins 정리글' 카테고리의 다른 글

T academy _ Jenkins를 이용한 CI/CD : 파이프라인 구성 실습 (2)  (0) 2021.09.30
T academy _ Jenkins를 이용한 CI/CD : 개발 환경 및 CI/CD 기본 동작, 파이프라인 구성 실습 (1)  (0) 2021.09.27
'Web/Jenkins 정리글' 카테고리의 다른 글
  • T academy _ Jenkins를 이용한 CI/CD : 파이프라인 구성 실습 (2)
  • T academy _ Jenkins를 이용한 CI/CD : 개발 환경 및 CI/CD 기본 동작, 파이프라인 구성 실습 (1)
구름뭉치
구름뭉치
구름의 개발일기장
    반응형
  • 구름뭉치
    구름 개발일기장
    구름뭉치
  • 전체
    오늘
    어제
    • ALL (290) N
      • 프로젝트 (23)
        • 토스페이먼츠 PG 연동 시리즈 (12)
        • JWT 방식 인증&인가 시리즈 (6)
        • 스우미 웹 애플리케이션 프로젝트 (1)
        • 스프링부트 기본 보일러 플레이트 구축 시리즈 (2)
        • 마이크로서비스 아키텍쳐 시리즈 (1)
      • 스프링 (43)
        • 스프링부트 API 설계 정리 (8)
        • 스프링부트 RestAPI 프로젝트 (18)
        • 스프링부트 WebSocket 적용기 (3)
        • 스프링 JPA 정리 시리즈 (5)
        • 스프링 MVC (5)
        • 스프링 배치 (2)
        • 토비의 스프링 정리 (2)
      • 기술 학습 (6) N
        • 아파치 카프카 (9)
        • 클린 코드 (4)
        • 디자인 패턴의 아름다움 (2)
        • 모던 자바 인 액션 (7)
        • JVM 스레드 딥다이브 (7)
      • Web (25)
        • 정리글 (20)
        • GraphQL 정리글 (2)
        • Jenkins 정리글 (3)
      • 취업 (6)
      • CS (77)
        • 네트워크 전공 수업 정리 (11)
        • OSI 7계층 정리 (12)
        • 운영체제 정리 (19)
        • 데이터베이스 정리 (5)
        • MySql 정리 (17)
        • GoF의 Design Pattern 정리 (12)
      • 알고리즘 (70)
        • 백준 (56)
        • 프로그래머스 (12)
        • 알고리즘 정리본 (1)
      • 기초 지식 정리 (2)
      • 일상 (8)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    동유럽
    키보드 손목 받침대
    레이저
    마우스 패드
    mx master s3 for mac
    크로아티아
    부다페스트
    류블라냐
    마우스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
구름뭉치
T academy _ Jenkins를 이용한 CI/CD 정리
상단으로

티스토리툴바