티스토리 뷰

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 : 언제 실행되는가
반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday