250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- subdag
- airflow subdag
- XAI
- GCP
- 상관관계
- flask
- hadoop
- chatGPT
- GenericGBQException
- 유튜브 API
- youtube data
- login crawling
- tensorflow text
- API
- integrated gradient
- UDF
- correlation
- requests
- BigQuery
- TensorFlow
- spark udf
- Retry
- grad-cam
- gather_nd
- 공분산
- Airflow
- Counterfactual Explanations
- session 유지
- top_k
- API Gateway
Archives
- Today
- Total
데이터과학 삼학년
Jenkins scripted pipeline (젠킨스 스크립트 파이프라인) 본문
반응형
DevOps를 위해 보통 파이프 라인을 만들어 사용한다. 젠킨스 내에 파이프 라인은 크게 선언적(declarative) 파이프라인과 스크립티드(scripted) 파이프라인을 지원한다.
선언적(Declarative) 파이프라인 pipeline { agent { docker ‘node:6.3’ } stages { stage(‘build’) { steps { sh "abc.sh ${variables}" } } } }
스크립티드(Scripted) 파이프라인 node() { checkout scm stage(‘Build’) { sh "abc.sh ${variables}" } } }
젠킨스 파이프라인은 기본적으로 groovy 언어를 지원하고 있어 이를 이용하면 메소드를 만들어 적용한다던가 간단한 반복 작업은 for문 groovy에서는 [].each{변수 -> } 이런식으로 사용할 수 있다.
또한 parallel 한 기능을 제공해주어서 파이프라인안에 parallel 명령어를 통해 병렬 처리를 쉽게 할 수있다.
retry와 timeout을 거는 것.
그리고 job이 실패 했을 때 mail을 받아보는 기능 등을 손쉽게 구현할 수 있다.
스크립트 파이프라인으로 구성한 예제 코드이다.
def Train(DATASET) { sh """training.sh ${MODEL_TYPE} ${JOB_DATE} ${DATASET}""" } node { try{ JOB_DATE = sh(script: 'TZ=Asia/Seoul date "+%Y%m%d" -d "yesterday"', returnStdout: true).trim() timeout(time:15, unit:'MINUTES') { stage('Initialize') { echo "MODEL_TYPE: ${MODEL_TYPE}" echo "JOB_DATE: ${JOB_DATE}" } timeout(time:2, unit:'HOURS') { dir('script') { stage('train') { retry(3) { echo 'predicting...' parallel ( 'k1' : { DATASET='k1' Train(DATASET) }, 'k2' : { sleep 10 DATASET='k2' Train(DATASET) }, 'k3' : { sleep 20 DATASET='k3' Train(DATASET) } ) } } } } } catch(err) { currentBuild.result = 'FAILURE' } finally { step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: RECIPIENTS, sendToIndividuals: true]) } }
Train을 함수로 만들어 dataset별로 병렬 처리한 예이다.
retry와 timeout을 걸어 동작을 제어할 수 있다.
젠킨스 파이프라인 뿐만 아니라 리모트 연결을 통해 다른 vm에 접속하여 동작을 명령시키는 것도 가능하다.
젠킨스와 더불어 airflow 등 devops를 위한 tool은 꼭 잘 숙지하는 것이 좋을 것이다.!!!
젠킨스도 하다보면 재미가 들려서 이를 이용하면 주기적인 크롤링이나 여러 반복되야하는 업무들을 자동화할 수 있어 편리하다.
젠킨스 스케쥴러는 crontab 으로 관리할 수 있어 편하다.. 나중에 크론탭도 한번 포스팅해야겠다. 끝~
728x90
반응형
LIST
'DevOps' 카테고리의 다른 글
jenkins workspace cleanup 설정 (0) | 2020.05.08 |
---|---|
Docker 명령어 정리 (3) | 2020.04.07 |
Crontab (스케쥴러 설정) (0) | 2020.03.26 |
Docker (feat.GCP) (0) | 2020.01.13 |
프로젝트 운영_RSA 암호 세팅(feat.ssh-keygen) (0) | 2020.01.09 |
Comments