안녕하세요! Administrator팀입니다 🦔
오늘은 지난 시간 AWS 파이프라인에 이어서 Jenkins 파이프라인에 대해 알아보려고 합니다!
Jenkins 파이프라인이란?
Jenkins 파이프라인은 지속적 전달 파이프라인을 Jenkins에 구현하고 통합하는 것을 지원하는 플러그인 모음입니다.
CD(지속적인 배포) 파이프라인은 버전 제어에서 사용자 및 고객에 이르기까지 소프트웨어를 가져오는 프로세스의 자동화된 표현입니다. 소프트웨어에 대한 모든 변경(소스 제어에서 커밋됨)은 릴리스되는 과정에서 복잡한 프로세스를 거칩니다. 이 프로세스에는 여러 단계의 테스트 및 배포를 통해 빌드된 소프트웨어를 진행하는 것뿐만 아니라 안정적이고 반복 가능한 방식으로 소프트웨어를 빌드하는 작업이 포함됩니다.
Jenkins는 기본적으로 다양한 자동화 패턴을 지원하는 자동화 엔진입니다. 파이프라인은 Jenkins에 강력한 자동화 도구 세트를 추가하여 단순한 연속 통합에서 포괄적인 CD 파이프라인에 이르는 사용 사례를 지원합니다. 일련의 관련 작업을 모델링하여 사용자는 파이프라인의 다양한 기능을 활용할 수 있습니다.
Code : 파이프라인은 코드로 구현되며 일반적으로 소스제어에 체크인되어 팀이 전달 파이프라인을 편집,
검토 및 반복할 수 있는 기능을 제공합니다.
Durable : 파이프라인은 Jenkins 컨트롤러의 계획된 재시작과 계획되지 않은 재시작 모두에서 살아남을 수 있습니다.
Pausable : 파이프라인 실행을 계속하기 전에 선택적으로 중지하고 사람의 입력이나 승인을 기다릴 수 있습니다.
Versatile : 분기/조인, 로프 및 병렬 작업 수행 기능을 포함하여 복잡한 실제 CD 요구사항을 지원합니다.
Extensible : 플러그인은 DSL에 대한 사용자 정의 확장과 다른 플러그인과의 통합을 위한 여러 옵션을 지원합니다.
아래는 Jenkins 파이프라인에서 쉽게 모델링된 CD 시나리오의 예입니다.
정리하자면,
CI(지속적인 통합)는 애플리케이션의 소스를 빌드, 테스트, 병합하는 것을 의미하고,
CD(지속적인 배포)는 변경사항이 레파지토리를 넘어, 고객에게 배포하는 것까지를 의미합니다.
그렇다면 레파지토리를 대상으로 소스를 가지고 와서 빌드 및 테스트를 한 후 배포까지의 일련의 작업들을 자동화할 순 없을까요?
이러한 작업들을 도와주는 툴이 바로 Jenkins 입니다.
즉, Jenkins는 Commit - Build - Test - Stage - Deploy 라는 일련의 CI/CD 프로세스를 자동화해줄 수 있습니다.
파이프라인 개념
파이프라인
- 파이프라인은 사용자 정의된 CD 파이프라인 모델입니다.
- 파이프라인의 코드는 당신의 전체적인 Build 프로세스를 정의하고,
일반적으로 애플리케이션을 빌드하기위해 stage를 포함하며 그것을 테스트하고 제공합니다.
- pipeline 블록은 선언적(Declarative) 파이프라인 구문의 핵심입니다.
노드
- 노드는 Jenkins 환경의 일부이며 파이프라인을 실행할 수 있는 시스템입니다.
- node 블록은 스크립팅된(Scripted) 파이프라인 구문의 핵심입니다.
스테이지
- stage 블록은 전체 파이프라인(Build-Test-Deploy 등)을 통해 수행된 업무의 별개 부분집합을 개념적으로 정의합니다.
이는 Jenkins 파이프라인 상태나 과정을 시각화하거나 표현하기위해 많은 플러그인에 의해 사용됩니다.
스텝
- 단일 업무
- 근본적으로 하나의 스텝은 Jenkins에게 특별한 시점에 무엇을 하라고 지시합니다.
예를 들어, 쉘 커맨드 make를 실행하기 위해 sh step: sh 'make'를 사용합니다.
파이프라인 구문 개요
"stage"와 "steps"는 Declarative와 Scripted에서 모두 공통적임의 유의하는게 좋습니다.
Declarative 파이프라인 기본
선언적 파이프라인 구문에서, pipeline 블록은 전체 파이프라인 내내 완료된 모든 작업을 정의합니다.
pipeline {
agent any (1)
stage {
stage('Build') { (2)
steps {
// (3)
}
}
stage('Test') { (4)
steps {
// (5)
}
}
stage('Deploy') { (6)
steps {
// (7)
}
}
}
}
(1) 사용 가능한 에이전트에서 이 파이프라인 또는 해당 단계를 실행합니다.
(2) "Build" 단계를 정의합니다.
(3) "Build" 단계와 관련된 몇 가지 단계를 수행합니다.
(4) "Test" 단계를 정의합니다.
(5) "Test" 단계와 관련된 몇 가지 단계를 수행합니다.
(6) "Deploy" 단계를 정의합니다.
(7) "Deploy" 단계와 관련된 몇 가지 단계를 수행합니다.
Scripted 파이프라인 기본
스크립트 파이프라인 구문에서, 하나 이상의 node 블록이 핵심 작업을 파이프라인 내내 수행합니다.
비록 스크립트 파이프라인 구문의 의무적인 요구는 아니지만,
파이프라인의 작업을 node 블록 내부로 제한하면 두 가지 작업이 수행됩니다.
- Jenkins 대기열에 항목을 추가하여 실행할 블록에 포함된 단계를 예약합니다.
실행기가 노드에서 사용가능하게 되면 단계가 실행됩니다.
- 소스 제어에서 체크 아웃된 파일에서 작업공간을 만듭니다.
node { // (1)
stage('Build') { // (2)
// (3)
}
stage('Test') { // (4)
// (5)
}
stage('Deploy') { // (6)
// (7)
}
}
(1) 사용 가능한 에이전트에서 이 파이프라인 또는 해당 단계를 실행합니다.
(2) "빌드" 단계를 정의합니다. stage 블록은 스크립팅된 파이프라인 구문에서 선택사항입니다.
그러나 stage 스크립팅된 파이프라인에서 블록을 구현하면 Jenkins UI에서 각 '단계의 작업/단계 하위 집합을
더 명확하게 시각화할 수 있습니다.
(3) "Build" 단계와 관련된 몇 가지 단계를 수행합니다.
(4) "Test" 단계를 정의합니다.
(5) "Test" 단계와 관련된 몇 가지 단계를 수행합니다.
(6) "Deploy" 단계를 정의합니다.
(7) "Deploy" 단계와 관련된 몇 가지 단계를 수행합니다.
오늘은 여기까지 Jenkins 파이프라인의 기본 개념과 대표적인 구문에 대해 알아봤습니다.
다음 시간에는 Jenkins 파이프라인 구축방법에 대해 더 자세하게 알아보겠습니다 🤣 베빠 ~~
reference site
https://www.jenkins.io/doc/book/pipeline/#_footnotedef_1
'INFRA > DevOps' 카테고리의 다른 글
Deployment (0) | 2022.05.20 |
---|---|
쿠버네티스 오브젝트 (0) | 2022.05.17 |
AWS DevOps CI/CD 환경 구축 2편(CodeCommit, CodeBuild, CodeDeploy, Codepipeline) (0) | 2022.05.13 |
k8s 노드간 통신 (0) | 2022.05.13 |
yaml 문법 (0) | 2022.05.12 |
댓글