패스트캠퍼스 챌린지 50일차
젠킨스
워크플로우의 간단한 예로 설명해보겠습니다.
젠킨스가 없는 경우 만약에 어떤 개발자가 서브웨이에 있는 코드를 수정할려고 하는 개발을 한다면, 외부에서 노트북으로 이 작업을 할려고 한다면. 수정 개발을 한 다음에 이 코드를 커밋한게 됩니다
커밋한 다음에 다시 이 서브웨이에 돌아와가지고 다시 변경사항이 있는지 깃허브에 들어가서 확인을 하고 코드에 그 변경사항을 반영해야 합니다.
이게 젠킨스가 없는 작업자의 일반적인 워크플로우이다
젠킨스가 있는 경우
개발자가 코드를 수정해서 깃허브에 커밋하기만 하면 이 젠킨스가 미리 커밋을 감지해서 바로 서버에 있는 코드로 자동으로 반영하게 됩니다. 자동 반영에 끝나는 것이 아니라 젠킨스의 일렬의 작업들이 정의되어 있어서 그 작업에 따라서 서버에 속도를 기반으로 한 어떤 동작을 해주게 된다. 예. 캐스팅,어떤 조건에 의해서만 이 부분을 반영할수도 있다. 여러 명령문을 서버에 날릴 수 있다.
jenkins란 ?
작업자가 수정하고 깃허브에 commit하면 jenkins가 감지해서 서버에 자동 반영하게 된다.
jenkins의 장점
소스코드 일관성 유지
- 소스 관리 시스템은 필요
- 정적 코드 분석에 의한 코딩 규약 준수여부 체크
자동빌드
- 커밋에 따른 자동 빌드
- 시간 간격에 의한 빌드
- 빌드 관리 툴이 있다면 효율성 극대화
자동 테스팅
- 빌드 과정에서의 테스팅
- 결합 테스트 환경 배포
- 자동 수행으로 안전망 역할
일일 체크아웃과 빌드
컴파일 오류 검출
프로파일링
Jenkins for MLOps
젠킨스가 가지고 있는 일련의 작접을 젠킨스 파이프라인이라고 한다.
젠킨스 파이프라인이 정의되어 있는 것이 젠킨스 파일이라는 것이다.
- Jenkinsfile
- Jenkinsfile 을 이용해 Job 혹은 파이프라인을 정의할 수 있다. Jenkinsfile 덕분에 일반 소스코드를 다루는 Github 업로드, Vscode 로 수정하는 것으로 파일을 이용할 수 있음
- 기본적으로 Jenkinsfile을 통해 젠킨스를 실행함
- Scripted Pipeline (스크립트 파이프라인)
- Jenkins 관련 구조를 자세히 가지지 않고 프로그램의 흐름을 Java 와 유사한 Groovy 라는 동적 객체 지향 프로그래밍 언어를 이용해 관리되었음
- 매우 유연하지만 시작하기가 어려움
#스크립트 파이프라인, groovy의 예제 파이프라인
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 (선언적 파이프라인)
- 2016년 경 Cloudbees 에서 개발
- 사전에 정의된 구조만 사용할 수 있기 때문에 CI/CD 파이프라인이 단순한 경우에 적합하며 아직은 많은 제약사항이 따른다.
- 아래는 공식문서
- https://www.jenkins.io/doc/book/pipeline/syntax/
#위의 스크립트 파이프라인을 Declarative Pipeline (선언적 파이프라인)으로 바꿨다
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!'
}
}
}
}
}
#직장인인강 #직장인자기계발 #패스트캠퍼스후기#온라인패키지:머신러닝서비스구축을위한실전MLOps#머신러닝서비스구축을위한실전MLOps온라인패키지Online.
https://bit.ly/37BpXiC
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.