Jenkins 파일 - 파라미터 사용법 차이
132
작성한 질문수 4
안녕하세요
섹션 18 - 82번 강의 : 배포 파이프라인 구축 후 마주하게 되는 고민들(실습)
수강 중 Jenkins 파일에 대한 질문이 있어 문의 드립니다.
Jenkins 파일을 작성할 때, parameter로 PROFILE(배포환경선택)과 DOCKERHUB_USERNAME(도커허브유저명)을 설정하셨는데
하기 코드를 보시면
parameters {
// 배포 환경 선택
choice(choices: ['dev', 'qa', 'prod'], name: 'PROFILE', description: '배포 환경 선택')
// DockerHub 사용자명 입력
string(name: 'DOCKERHUB_USERNAME', defaultValue: '', description: 'DockerHub 사용자명을 입력하세요.')
// GitHub 사용자명 입력
string(name: 'GITHUB_USERNAME', defaultValue: '', description: 'GitHub 사용자명을 입력하세요.')
}
stage('헬름 배포') {
steps {
// helm 명령 사용 - [1] 중요 데이터 암호화 관리
withCredentials([file(credentialsId: 'k8s_master_config', variable: 'KUBECONFIG')]) {
sh "helm upgrade api-tester-${CLASS_NUM} ./${CLASS_NUM}/deploy/helm/api-tester -f ./${CLASS_NUM}/deploy/helm/api-tester/values-${params.PROFILE}.yaml" +
" -n anotherclass-222-${params.PROFILE} --install --kubeconfig " + '${KUBECONFIG}' +
// [5] Helm 부가기능
" --wait --timeout=10m" + // 최대 10분으로 설정
// [2] 잦은 배포 - versioning 무의미, 계획된 배포 - versioning 필수
" --set image.tag=${TAG}" +
" --set image.repository=${DOCKERHUB_USERNAME}/api-tester"
}
}
}
PROFILE은 앞에 "params"가 붙어있고 (${params.PROFILE}),
DOCKERHUB_USERNAME은 환경변수처럼 그냥 ${DOCKERHUB_USERNAME}로 사용하신 것을 볼 수 있습니다.
혹시 choice문을 사용하여 사용자가 선택하는 prarmeter의 경우 params를 붙인다던가 하는 규칙이 있는 걸까요?
위 두 개 사용 방법이 다른 것에 원인이 있는지 궁금합니다.
답변 1
2
제 스크립트에 변수 규칙이 살짝 바르지 않은 점이 있네요. 좋은 질문 감사합니다.
젠킨스 스크립트가 관대한 면이 있기 때문에, paramas를 붙이건 안붙이건 문제는 없을 거고요.
하지만 일관된 방식으로 쓰려면 아래와 같이 쓰시면 됩니다.
Groovy 코드 블록에서 parameters로 정의한 변수는 다른 블록에서 ${params.PROFILE}이렇게 쓰고요.
Groovy 문법 안에 shell(sh)에서 해당 변수를 사용하려면 environment로 다시 정의를 하고 ${PROFILE} 이렇게 쓰면 됩니다.
pipeline {
agent any
parameters {
choice(name: 'PROFILE', choices: ['dev', 'qa', 'prod'], description: '배포 환경 선택')
string(name: 'DOCKERHUB_USERNAME', defaultValue: '', description: '도커허브 사용자명')
}
environment {
PROFILE = "${params.PROFILE}"
DOCKERHUB_USERNAME = "${params.DOCKERHUB_USERNAME}"
}
stages {
stage('Print Environment') {
steps {
echo "Groovy에서 PROFILE: ${params.PROFILE}"
sh '''
echo "Shell에서 PROFILE: ${PROFILE}"
echo "Shell에서 DOCKERHUB_USERNAME: ${DOCKERHUB_USERNAME}"
'''
}
}
}
}
젠킨스버전과 플러그인설치
1
28
2
강의자료 원본 애니메이션처리가 되어 있을까요?
1
85
1
get pods 했을 때 connection refused가 뜹니다.
1
90
3
베이그란트 플러그인 설치 실패
1
84
1
실습겸 미니pc사보려는데 이정도면 괜찮을까요?
0
91
2
Image updater 1.0 이후 CRD 기반 변경 시 적용 방법 공유합니다.
1
83
1
기본 values 파일과 service name에 대한 질문이 있습니다.
0
71
2
Sprint 2 강의에서 yaml 파일들 경로에 대해 궁금한게 있어요.
1
62
2
Selector의 속성에 대해 질문 드립니다.
1
56
1
인스턴스 스펙
1
69
2
Container 기술 관련해서 질문드립니다.
1
80
3
Jenkins 빌드 UI 설정 관련 질문드립니다.
1
84
3
Jenkins 빌드 진행 UI 설정
0
67
1
cicd 서버 올린 후 기존 마스터 노드 기동 시 네트워크 에러
1
77
2
HPA - Auto Scaling 실습 관련 에러 해결 공유.
1
64
1
Loki-Stack 실습 관련 질문
1
72
2
Self-Healing 테스트 중 문의사항
1
70
2
영상 내용과 강의 자료가 상이해서 강의 듣기가 짜증납니다.
0
104
2
젠킨스 구축 9단계 오류
1
89
3
실습환경 네트워크 끊김 및 느린 속도 관련 질문
1
84
2
온프레미스 환경에 쿠버네티스도입
1
101
1
SealedSecret 관련 궁금증.
1
49
1
vagrant up 사용 시 The SSH connection was unexpectedly closed by the remote end
1
88
2
젠킨스 배포 질문
1
56
2





