Helpdesk dev, prod 배포환경 분리
All checks were successful
Main-Build / build-and-push (push) Successful in 1m17s
All checks were successful
Main-Build / build-and-push (push) Successful in 1m17s
This commit is contained in:
63
Jenkinsfile
vendored
63
Jenkinsfile
vendored
@@ -1,10 +1,11 @@
|
||||
// Jenkinsfile — Kaniko build + K8s deploy (빌드번호 태그 사용)
|
||||
def L = 'kaniko-and-deploy'
|
||||
def REG = 'harbor.sayinfo.co.kr'
|
||||
def IMAGE = 'sayit-helpdesk/helpdesk-service' // Harbor 프로젝트/레포 이름
|
||||
def APP_NS = 'sayit-helpdesk' // 실제 K8s 네임스페이스
|
||||
def DEPLOY = 'sayit-helpdesk-service' // 실제 Deployment 이름
|
||||
def IMAGE_TAG = "${env.BUILD_NUMBER}"
|
||||
// Jenkinsfile — Kaniko build + K8s deploy
|
||||
// - dev/prod 잡 분리 전제
|
||||
// - TARGET_ENV 는 Jenkins Job 설정에서 환경변수로 고정 (dev 또는 prod)
|
||||
|
||||
def L = 'kaniko-and-deploy'
|
||||
def REG = 'harbor.sayinfo.co.kr'
|
||||
def IMAGE = 'sayit-helpdesk/helpdesk-service'
|
||||
def DEPLOY = 'sayit-helpdesk-service'
|
||||
|
||||
podTemplate(
|
||||
label: L,
|
||||
@@ -70,34 +71,59 @@ spec:
|
||||
"""
|
||||
) {
|
||||
node(L) {
|
||||
|
||||
// Jenkins Job 설정에서 TARGET_ENV 를 dev 또는 prod 로 고정해서 넘김
|
||||
// (없으면 기본 dev로 간주)
|
||||
def TARGET_ENV = env.TARGET_ENV ?: 'dev'
|
||||
|
||||
def MVN_PROFILE = (TARGET_ENV == 'dev') ? 'dev' : 'prod'
|
||||
def APP_NS = (TARGET_ENV == 'dev') ? 'sayit-helpdesk-dev' : 'sayit-helpdesk'
|
||||
def OTEL_ENV = (TARGET_ENV == 'dev') ? 'dev' : 'prod'
|
||||
def OTEL_SERVICE_NAME = (TARGET_ENV == 'dev') ? 'sayit-helpdesk-dev' : 'sayit-helpdesk'
|
||||
|
||||
def IMAGE_TAG = "${TARGET_ENV}-${env.BUILD_NUMBER}" // dev-123 / prod-123
|
||||
def LATEST_TAG = "latest-${TARGET_ENV}" // latest-dev / latest-prod
|
||||
|
||||
timestamps {
|
||||
|
||||
stage("Info") {
|
||||
echo "TARGET_ENV = ${TARGET_ENV}"
|
||||
echo "MVN_PROFILE = ${MVN_PROFILE}"
|
||||
echo "APP_NS = ${APP_NS}"
|
||||
echo "OTEL_ENV = ${OTEL_ENV}"
|
||||
echo "OTEL_SERVICE_NAME = ${OTEL_SERVICE_NAME}"
|
||||
echo "IMAGE_TAG = ${IMAGE_TAG}"
|
||||
echo "LATEST_TAG = ${LATEST_TAG}"
|
||||
}
|
||||
|
||||
stage('Checkout') {
|
||||
checkout scm
|
||||
}
|
||||
|
||||
stage('Maven Build') {
|
||||
stage("Maven Build (${MVN_PROFILE})") {
|
||||
container('maven') {
|
||||
sh '''
|
||||
sh """
|
||||
set -eux
|
||||
cd "${WORKSPACE}"
|
||||
mvn -B -q -e -T 1C -s .mvn/settings.xml clean package -DskipTests
|
||||
'''
|
||||
nslookup nexus.sayinfo.co.kr || true
|
||||
cd "\${WORKSPACE}"
|
||||
mvn -B -q -e -T 1C -s .mvn/settings.xml clean package -DskipTests -P${MVN_PROFILE}
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
stage('Preflight (Kaniko)') {
|
||||
container('kaniko') {
|
||||
sh '''
|
||||
sh """
|
||||
set -eux
|
||||
cd "${WORKSPACE}"
|
||||
cd "\${WORKSPACE}"
|
||||
test -f /kaniko/.docker/config.json
|
||||
nslookup harbor.sayinfo.co.kr || true
|
||||
grep harbor /etc/hosts || true
|
||||
'''
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build & Push (Kaniko)') {
|
||||
stage("Build & Push (Kaniko, tag=${IMAGE_TAG}, latest=${LATEST_TAG})") {
|
||||
container('kaniko') {
|
||||
sh """
|
||||
set -eux
|
||||
@@ -106,6 +132,9 @@ spec:
|
||||
--context=. \\
|
||||
--dockerfile=Dockerfile \\
|
||||
--destination=${REG}/${IMAGE}:${IMAGE_TAG} \\
|
||||
--destination=${REG}/${IMAGE}:${LATEST_TAG} \\
|
||||
--build-arg OTEL_ENV=${OTEL_ENV} \\
|
||||
--build-arg OTEL_SERVICE_NAME=${OTEL_SERVICE_NAME} \\
|
||||
--snapshot-mode=redo \\
|
||||
--skip-tls-verify \\
|
||||
--cache=true \\
|
||||
@@ -114,7 +143,7 @@ spec:
|
||||
}
|
||||
}
|
||||
|
||||
stage('Deploy to Kubernetes') {
|
||||
stage("Deploy to Kubernetes (${APP_NS})") {
|
||||
container('kubectl') {
|
||||
sh """
|
||||
set -eux
|
||||
|
||||
Reference in New Issue
Block a user