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 |
Tags
- flask
- Airflow
- integrated gradient
- UDF
- spark udf
- airflow subdag
- login crawling
- hadoop
- gather_nd
- Counterfactual Explanations
- youtube data
- top_k
- 상관관계
- grad-cam
- 공분산
- XAI
- Retry
- correlation
- subdag
- session 유지
- GenericGBQException
- API Gateway
- 유튜브 API
- BigQuery
- API
- tensorflow text
- requests
- chatGPT
- TensorFlow
- GCP
Archives
- Today
- Total
데이터과학 삼학년
젠킨스 remote ssh pipeline (feat. nested parallel, remote ssh, gcloud compute ssh) 본문
DevOps
젠킨스 remote ssh pipeline (feat. nested parallel, remote ssh, gcloud compute ssh)
Dan-k 2020. 8. 28. 23:10반응형
젠킨스 파이프라인에서 다른 vm ssh에 접속해 데이터 전처리를 처리하는 것을 알아본다.
젠킨스는 1번 vm에 깔려 job을 관리하고 있고
젠킨스에서 내린 명령은 2번 vm에서 parallel로 돌기를 원한다
Pipeline
1. 젠킨스가 깔린 1번 vm에서 실행시키고자 하는 코드를 git으로 부터 받는다.
2. 1번 vm에 있는 코드를 2번 vm에 복사하여 넣는다 (gcloud compute scp)
3. 2번 vm에서 parallel로 돌도록 명령을 내린다 (gcloud compute ssh)
젠킨스 파이프라인 코드
def preprocessParallel(LANGUAGE, N_SPLIT, MODE) {
sh """
gcloud compute ssh anomaly-detection-pan --project='2번 vm 인스턴스 project_id' --zone='us-central1-f' \
-- "sudo python /home/ubuntu/preprocess.py --job_date=${JOB_DATE} --project_id=${PROJECT_ID} --language=${LANGUAGE} --n_split=${N_SPLIT} --mode=${MODE}"
"""
}
def preprocessNestedParallel(MODE){
parallel(
'ko-kr': {
LANGUAGE = 'ko-kr'
N_SPLIT = 10
preprocessParallel(LANGUAGE, N_SPLIT, MODE)
},
'en-us': {
LANGUAGE = 'en-us'
N_SPLIT = 10
preprocessParallel(LANGUAGE, N_SPLIT, MODE)
},
'etc': {
LANGUAGE = 'etc'
N_SPLIT = 10
preprocessParallel(LANGUAGE, N_SPLIT, MODE)
}
)
}
node {
JOB_DATE = sh(script: 'TZ=Asia/Seoul date "+%Y%m%d" -d "yesterday"', returnStdout: true).trim() #'20200827'
PROJECT_ID='project_id'
timeout(time:30, unit:'MINUTES') {
stage('Code_Sync') {
retry(3) {
sh script:"""
if [ ! -d ".git" ]; then
rm -rf ./*
git clone -b preprocess --single-branch git@00.000.0.0:preprocess ./
else
git pull origin preprocess
fi
"""
}
}
}
stage('Copy files to Remote SSH') {
sh """
eval `ssh-agent`
ssh-add ~/.ssh/google_compute_engine
gcloud compute scp --project="2번 vm 인스턴스 project_id" --zone="us-central1-f" \
--recurse /var/lib/jenkins/workspace/preprocess root@<2번 vm 인스턴스명>:/home/ubuntu
"""
sh """
echo Completed copy files from local to remote ssh
"""
}
// PARALLEL 은 데이터를 각 수행잡별로 BQ에 올리기 때문에 APPEND 형태로 되어 있음
// 따라서 먼저 기존에 데이터가 있다면 지워야 함
timeout(time:30, unit:'MINUTES'){
stage('Initialize preprocess data in BQ'){
echo 'initialize BQ table'
sh """
bq rm --project_id=${PROJECT_ID} -f -t DATASET.preprocess_data_${JOB_DATE}
"""
}
}
timeout(time:2, unit:'HOURS') {
stage('Compute remote ssh & Nested Preprocess Parallel') {
parallel(
'train': {
MODE = 'train'
preprocessNestedParallel(MODE)
},
'predict': {
MODE = 'predict'
preprocessNestedParallel(MODE)
}
)
}
}
}
728x90
반응형
LIST
'DevOps' 카테고리의 다른 글
젠킨스 타임존 설정 (0) | 2021.03.14 |
---|---|
젠킨스 파이프라인 관리 (공통화 활용) (0) | 2020.11.09 |
[Jenkins] remote ssh 연결하여 jenkins에서 다른 ssh에 명령 날리기 (feat. gcloud compute ssh, gcloud compute scp, jenkins) (0) | 2020.08.27 |
젠킨스 workspace clean-up 설정 변경 (feat. 난 clean-up을 원치 않아!) (1) | 2020.06.05 |
Airflow VS Jenkins (0) | 2020.06.04 |
Comments