pipeline { agent { label "dev" } environment { BUILD_IMAGE = "${sh(script:'echo -n likei-dev:auth-$(date +%Y%m%dv%H%M%S)', returnStdout: true)}" JAR_FILE = "" JAR_SIZE = "" JAR_TARGET_DIR = "rc-auth/target" JAR_NAME = "rc-auth-*.jar" IMAGE_REP_TAG = "989328288674.dkr.ecr.ap-southeast-1.amazonaws.com/" DOCKER_FILE = "rc-auth/Dockerfile" DOCKER_DIR = "rc-auth" K8S_NAMESPACE = "prod" K8S_DEPLOYMENT = "auth" K8S_APP_LABEL = "auth" } stages { stage('Build') { steps { sh 'mvn clean package -pl rc-auth -am -P prod -Dmaven.test.skip=true' sh 'ls ${JAR_TARGET_DIR}' script { JAR_FILE="${sh(script:'ls -t ${JAR_TARGET_DIR}/${JAR_NAME} | head -n 1', returnStdout: true)}" JAR_SIZE="${sh(script:'du -h ${JAR_TARGET_DIR}/${JAR_NAME}', returnStdout: true)}" IMAGE_REP_TAG="${sh(script:'echo -n ${IMAGE_REP_TAG}${BUILD_IMAGE}', returnStdout: true)}" } echo "---> Jar file: ${JAR_FILE}" echo "---> Jar size: ${JAR_SIZE}" echo "---> Image name: ${BUILD_IMAGE}" echo "---> Image registry tag: ${IMAGE_REP_TAG}" } } stage('Build image') { steps { sh "aws ecr get-login-password --region ap-southeast-1 | docker login --username AWS --password-stdin 989328288674.dkr.ecr.ap-southeast-1.amazonaws.com" sh "docker build --build-arg SERVICE_VERSION=${BUILD_IMAGE} -f ${DOCKER_FILE} -t ${BUILD_IMAGE} ${DOCKER_DIR}" } } stage('Upload image') { steps { sh "docker tag ${BUILD_IMAGE} ${IMAGE_REP_TAG}" sh "docker push ${IMAGE_REP_TAG}" sh "docker rmi -f ${BUILD_IMAGE} ${IMAGE_REP_TAG}" } } stage('Apply') { steps { sh "pwd && whoami" sh "kubectl -n ${K8S_NAMESPACE} set image deployment/${K8S_DEPLOYMENT} ${K8S_APP_LABEL}=${IMAGE_REP_TAG} --kubeconfig /data/kube/prod-config" } } } post { always { cleanWs() } } }