포스팅 개요
본 포스팅은 CD 자동화 tool인 Jenkins와 Jenkins의 플러그인 중 하나인 Jenkins Pipeline의 개념에 대해 정리하는 글입니다.
Jenkins란?
- Jenkins란?
- Jenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software. - Jenkins
- 소프트웨어 개발 시의 지속적 통합 서비스를 제공하는 tool
- Jenkins의 역할과 장점
- 소스코드 일관성 유지
- 소스 관리 시스템은 필요
- 정적 코드 분석에 의한 코딩 규약 준수 여부 체크
- 자동 빌드
- commit에 따른 자동 빌드
- 시간 간격에 의한 빌드
- 자동 테스팅
- 빌드 과정에서의 테스팅
- 결합 테스트 환경 배포
- 자동 수행으로 안전망 역할
- 일일 체크아웃과 빌드
- 컴파일 오류 검출
- 프로파일링
- 소스코드 일관성 유지
Jenkins Pipeline
- Jenkins Pipeline
- 공식 문서
- 연속적인 event 또는 job의 그룹을 실행시켜주는 jenkins의 플러그인
- 단순한 job이 많아지는 경우, 이를 pipeline으로 작성하여 하나의 job으로 묶음으로써 관리 및 운영 측면에서의 편의 ⬆️
- Jenkinsfile
- jenkins pipeline을 정의하는 파일
- jenkinsfile을 통해 Jenkins를 실행
- Scripted Pipeline과 Declarative Pipeline의 두 가지 방식으로 작성 가능
Scripted Pipeline (스크립트 파이프라인)
- Groovy라는 동적 객체 지향 프로그래밍 언어의 문법을 기반으로 함
- Declarative보다 효과적이고 많은 기능을 포함하여 작성 가능하지만 시작하기 어려움
node { ## 빌드를 수행할 node 또는 agent를 의미한다.
stage("Stage 1"){
echo "Hello"
}
stage("Stage 2"){
echo "World"
sh "sleep 5"
}
stage("Stage 3"){
echo "Good to see you!"
}
}
Declarative Pipeline (선언적 파이프라인)
- 스크립트 파이프라인과 마찬가지로 Groovy 문법 기반이지만, 몰라도 쉽게 작성이 가능함
- 사전에 정의된 구조만 사용할 수 있기 때문에 CI/CD 파이프라인이 단순한 경우에 적합하며 아직은 많은 제약사항이 있음
pipeline {
agent any
stages {
stage('Stage 1') {
steps {
script {
echo 'Hello'
}
}
}
stage('Stage 2') {
steps {
script {
echo 'World'
sh 'sleep 5'
}
}
}
stage('Stage 3') {
steps {
script {
echo 'Good to see you!'
}
}
}
}
}
- reference
'Engineering > MLOps' 카테고리의 다른 글
[MLOps] 08 ML Workflow - Github Actions (0) | 2023.02.09 |
---|---|
[MLOps] 07 Kubeflow (0) | 2023.02.08 |
[MLOps] 06 Model Monitoring - Prometheus (0) | 2023.02.08 |
[MLOps] 05 Model Serving (0) | 2023.01.21 |
[MLOps] 04 Model Management & MLflow (0) | 2023.01.20 |
댓글