본문 바로가기
Engineering/MLOps

[MLOps] 09 Jenkins

by iamzieun 2023. 2. 20.

포스팅 개요

본 포스팅은 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!'
                }
            }
        }
    }
}

 

  •  

'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

댓글