80 lines
3.2 KiB
Plaintext
80 lines
3.2 KiB
Plaintext
pipeline {
|
|
agent {
|
|
label "dev"
|
|
}
|
|
|
|
tools {
|
|
maven 'maven3'
|
|
jdk 'jdk17'
|
|
}
|
|
|
|
environment {
|
|
KUBECONFIG = "/var/jenkins_home/.kube/cls-bf654m8u-config"
|
|
PATH = "/var/jenkins_home/docker-cli/bin:/var/jenkins_home/jdk-17/bin:/var/jenkins_home/kubectl/bin:${env.PATH}"
|
|
BUILD_IMAGE = "${sh(script:'echo -n atyou-prod:gateway-$(date +%Y%m%dv%H%M%S)', returnStdout: true)}"
|
|
JAR_FILE = ""
|
|
JAR_SIZE = ""
|
|
JAR_TARGET_DIR = "rc-gateway/target"
|
|
JAR_NAME = "rc-gateway-*.jar"
|
|
ALIYUN_REGISTRY = "tuokemi-con-registry.ap-southeast-1.cr.aliyuncs.com/atyou-prod/gateway"
|
|
IMAGE_REP_TAG = ""
|
|
DOCKER_FILE = "rc-gateway/Dockerfile"
|
|
DOCKER_DIR = "rc-gateway"
|
|
K8S_NAMESPACE = "prod"
|
|
K8S_DEPLOYMENT = "gateway"
|
|
K8S_APP_LABEL = "gateway"
|
|
}
|
|
|
|
stages {
|
|
stage('Build') {
|
|
steps {
|
|
configFileProvider([configFile(fileId: '0fcb2100-aec1-45ef-b3ea-64f2f911d462', variable: 'MAVEN_SETTINGS')]) {
|
|
sh 'mvn clean package -pl rc-gateway -am -P prod -Dmaven.test.skip=true -s $MAVEN_SETTINGS'
|
|
sh 'ls ${JAR_TARGET_DIR}'
|
|
script {
|
|
JAR_FILE = "${sh(script:'ls -t ${JAR_TARGET_DIR}/${JAR_NAME} | head -n 1', returnStdout: true).trim()}"
|
|
JAR_SIZE = "${sh(script:'du -h ${JAR_TARGET_DIR}/${JAR_NAME}', returnStdout: true).trim()}"
|
|
IMAGE_REP_TAG = "${ALIYUN_REGISTRY}:gateway-${sh(script:'date +%Y%m%dv%H%M%S', returnStdout: true).trim()}"
|
|
}
|
|
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 {
|
|
withCredentials([usernamePassword(
|
|
credentialsId: 'aliyun-registry',
|
|
usernameVariable: 'ALIYUN_USER',
|
|
passwordVariable: 'ALIYUN_PASS'
|
|
)]) {
|
|
sh 'echo $ALIYUN_PASS | docker login --username $ALIYUN_USER --password-stdin tuokemi-con-registry.ap-southeast-1.cr.aliyuncs.com'
|
|
}
|
|
sh "docker build --build-arg SERVICE_VERSION=${BUILD_IMAGE} -f ${DOCKER_FILE} -t ${IMAGE_REP_TAG} ${DOCKER_DIR}"
|
|
}
|
|
}
|
|
stage('Upload image') {
|
|
steps {
|
|
sh "docker push ${IMAGE_REP_TAG}"
|
|
sh "docker tag ${IMAGE_REP_TAG} tuokemi-con-registry.ap-southeast-1.cr.aliyuncs.com/atyou-prod/gateway:latest"
|
|
sh "docker push tuokemi-con-registry.ap-southeast-1.cr.aliyuncs.com/atyou-prod/gateway:latest"
|
|
sh "docker rmi -f ${IMAGE_REP_TAG} tuokemi-con-registry.ap-southeast-1.cr.aliyuncs.com/atyou-prod/gateway:latest"
|
|
}
|
|
}
|
|
stage('Apply') {
|
|
steps {
|
|
sh "pwd && whoami"
|
|
sh "kubectl -n ${K8S_NAMESPACE} set image deployment/${K8S_DEPLOYMENT} ${K8S_APP_LABEL}=${IMAGE_REP_TAG}"
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
always {
|
|
cleanWs()
|
|
}
|
|
}
|
|
}
|