Jenkins 기초개념 잡기

jongcloud's avatar
Apr 16, 2024
Jenkins 기초개념 잡기
 
jenkins 에 기초 개념을 잡기 전에 CI/CD 파이프라인에 대해 개념을 잡을 필요가 있다.
jenkins 강의중 youtube를 통해 좋은 강의자료가 있어 내용을 정리해보았다.
💡
[토크ON세미나] Jenkins를 활용한 CI/CD 1강 - 젠킨스(Jenkins) 이해 | T아카데미
https://www.youtube.com/watch?v=JPDKLgX5bRg
 

1. CI/CD란 무엇인가?

CI: 지속적인 통합
무엇을 통합할건데?
→ 여러 개발자들의 코드를 통합한다.
 
CD: 지속적인 배포
무엇을 배포하는데?
→ 사용자에게 제품/서비스를 지속적으로 배포한다.
코드베이스가 항상 배포가능한 상태를 유지하는 것.
 
개발자들이 개발을 하는 개발 환경을 사용자가 사용 가능한 서비스로 전달하는 모든 과정을 지속 가능한 형태로, 또 가능하다면 자동으로 해서 개발자와 사용자 사이의 격차를 없애는 것.
 
이러한 과정에서는 코드를 빌드하고, 테스트하고 배포하는 활동이 있다.
 
참고: https://www.youtube.com/watch?v=JPDKLgX5bRg
 

2. 젠킨스

2-1. 젠킨스의 필요성

java runtime 위에서 동작하는 자동화 서버
빌드, 테스트, 배포 등 모든 것을 자동화 해주는 자동화 서버.

2-2. 기본개념

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

2-2-1. 젠킨스의 플러그인

  • 매우 많은 플러그인
  • 대표적인 플러그인
    • Credentials Plugin
    • Git Plugin
    • Pipeline
    • 2-2-1-1. Credentials Plugin

      Jenkins는 단지 서버일 뿐이라 배포에 필요한 각종 리소스(클라우드 리소스 혹은 베어메탈에 ssh 접근 등)에 접근하기 위해서는 여러가지 중요 정보들을 저장하고 있어야 한다.
      (AWS token, Git access Token..)
 

2-3. Pipeline

  • 파이프라인이란 CI/CD 파이프라인을 젠킨스에 구현하기 위한 일련의 플러그인들의 집합이자 구성.
  • 두 가지 형태의 Pipeline syntax가 존재
    • Declarative
    • Scripted Pipeline
  • 3년전 강의의 말을 빌리자면.. Declarative Pipeline syntax가 더 최신이고 가독성이 좋다고 하여 이 정리글에서도 Declarative 방식을 사용할 예정..
 

2-3-1. Jenkins의 구성

  • 섹션
    • Agent Section : 젠킨스는 여러 다른 Agent에다가 어떤 jenkins에다가 일을 시킬건지.. 젠킨스 노드 관리에서 새로 노드를 띄우거나 혹은 docker 이미지등을 통해서 처리할 수 있음
    • Post Section : 스테이지가 끝난 이후의 결과에 따라서 후속 조치를 취할 수 있음
      • EX) 성공시에 성공 이메일, 실패하면 중단 혹은 건너뛰기 등등
    • Stages Section : 어떤 일들을 처리할 건지 일련의 stage를 정의함
    • Step Section : 한 스테이지 안에서 단계로 일련의 스텝을 보여줌
  • Declaratives : 각 스테이지 안에서 어떤어떤 일들을 할건지
  • Steps : Step 내부는 여러가지 스탭들로 구성, 플러그인을 깔면 사용할 수 있는 스텝들이 생겨남

💡
[토크ON세미나] Jenkins를 활용한 CI/CD 2강 - 젠킨스 개발환경 및 CI/CD 기본 동작 이해 | T아카데미 https://www.youtube.com/watch?v=3WZoVkvLE4A
 

개발 환경 프로세스

  1. 로컬 PC에서 코드 작성
  1. 다른 개발자가 작성한 코드와 차이가 발생하지 않는지 내부 테스트
    1. githook 등과 같이 커밋 하기전에 로컬에서 테스트를 돌린다.
  1. 진행한 내용을 git 과 같은 SCM에 올린다.
    1. 흔히 dev 브랜치
  1. Jenkins가 git레포지토리를 계속 보고있다가 Lint를 돌리고
  1. 빌드를 돌리고
  1. 배포한다
  1. 테스트한다.
인프라를 모듈화 하여 어떤것이 변수인지 잘 설정하고 이를 잘 설계하는것

S3
 
Share article

jongcloud