1. Pipeline Project생성

1. Pipeline Project

CI/CD 파이프라인 구성 시 Maven Porject에 비해 확장성 및 자동화 측면에서 훨씬 자주 사용되는 프로젝트로 젠킨스 프로젝트에서 사실상 표준처럼 사용되는 프로젝트이다

Maven Project에서는 CI/CD인프라를 UI를 통해 관리했다면, Pipeline Project는 DSL 및 Jenkinsfile을 이용하여 코드형태로 CI/CD 인프라를 관리한다.

2. Pipeline Project 생성

1) 플러그인 설치

2) 프로젝트 생성

3) Pipeline Script작성

4) 빌드 후 결과 확인

3. PipeLine Script

소프트웨어의 전체 CI/CD 단계를 자동화하고 이를 코드를 통해 관리하도록 도와주는 Jenkins의 핵심기능입니다.

파이프라인을 코드로 정의함으로써 Git과 같은 형상 관리 시스템을 통해 버전 관리, 코드 리뷰, 협업 등을 효율적으로 수행할 수 있습니다. 이는 Infrastructure as Code와 유사하게 CI/CD 파이프라인 자체를 코드화하여 관리합니다.(Infra as Code)

1) DSL문법과 Jenkinsfile

DSL(Domain Specific Language)

  • Pipeline스크립트를 작성하는데 사용되는 스크립트 문법

  • Groovy기반의 문법이며, Jenkins에서만 사용가능하다.

  • 사용자 편의를 위해 Pipeline Syntax Generator기능을 제공하여 복잡한 스크립트 코드를 쉽게 생성할 수 있다.

  • 코드생성 예시

Jenkinsfile

  • DSL문법을 사용하여 CI/CD 파이프라인을 정의한 텍스트 파일. 일반적으로 프로젝트의 루트디렉토리에 관리한다.

  • GIT으로 형상관리가 가능하기 때문에 협업 및 유지보수에 좋다.

  • 파이프라인이 코드로 정의되어 있어, 다른 환경에서도 동일한 빌드 및 배포과정을 손쉽게 재현할 수 있다.

2) Agent와 Stage

Agent

  • 파이프라인의 각 단계를 실행할 작업환경(노드)를 정의하는 키워드

    • agent any : 사용 가능한 모든 에이전트 중 하나를 임의로 선택하여 파이프라인 전체를 실행

  • 젠킨스는 기본적으로 controller(master)라는 이름의 노드를 하나 가지고 있기 때문에, agent any 설정시 controller노드가 작업을 수행한다.

  • 대규모 어플리케이션에서는 여러 개의 노드를 추가로 설치하여 노드별로 작업을 분산처리한다.

Stage

  • CI/CD 파이프라인의 논리적인 단계를 의미한다. 각 단계는 해당 단계에 맞는 목적의 집합으로, 파이프라인의 각 단계를 Stage로 나누어 가독성을 높이고 진행상태를 한눈에 파악할 수 있또록 해준다.

4. Maven Project의 CI/CD를 Code화

1) 도커 파이프라인 플러그인 설치

2) 도커허브 접속용 인증 키 추가

  • 젠킨스 관리 - Credentials - System - Global credentials - Add credential

  • ID에 오타가 나지 않도록 주의 (DockerHub_Credential)

3) 파이프라인 스크립트 추가

  • 도커 이미지, 깃허브 url, 소나큐브 url은 본인계정에 맞게 수정 필요.

4) 빌드 후 결과 확인

Last updated