pipeline { agent any environment { JAVA_HOME = "/var/jenkins_home/jdk" // git账号,不用改 GIT_CREDENTIAL_ID = '175776d4-6bbc-4da1-ace2-f2a89453fba4' // git地址 GIT_ADDRESS = 'https://git.mall4j.com/bbc/mall4j-bbc' // git分支 GIT_BRANCH = 'master' // harbor账号,不用改 HARBOR_CREDENTIAL_ID = 'edd44d2d-f182-40ab-8e72-b4fcae6f793f' // harbor地址 HARBOR_ADDR = '192.168.1.11:80' // 名命空间 NAMESPACE = 'mall4j-b2b2c-release' } stages { stage ('拉取git仓库代码') { steps { checkout([$class: 'GitSCM', branches: [[name: '*/' + "$GIT_BRANCH"]], extensions: [], userRemoteConfigs: [[credentialsId: "$GIT_CREDENTIAL_ID", url: "$GIT_ADDRESS"]]]) } } stage ('通过maven构建项目') { steps { // 替换es索引地址 sh 'sed -i "s#PRODUCT(\\"product\\")#PRODUCT(\\"$NAMESPACE-product\\")#g" ./yami-shop-search/yami-shop-search-common/src/main/java/com/yami/shop/search/common/constant/EsIndexEnum.java' // 替换定时任务 sh 'sed -i "s#\\"mall4j-bbc\\"#\\"mall4j-bbc\\"#g" ./yami-shop-platform/src/main/java/com/yami/shop/platform/config/XxlJobConfig.java' // 构建项目 sh '/var/jenkins_home/maven/bin/mvn -T 1C clean package -DskipTests=true' } } stage ('通过docker并行制作镜像') { parallel { stage('构建yami-shop-api镜像') { steps { withEnv(["PROJECT_NAME=yami-shop-api"]) { sh 'cd ./$PROJECT_NAME && docker build -t $HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER .' withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$HARBOR_CREDENTIAL_ID" ,)]) { sh 'echo "$DOCKER_PASSWORD" | docker login $HARBOR_ADDR -u "$DOCKER_USERNAME" --password-stdin' sh 'docker push $HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER' sh 'ssh root@192.168.1.5 kubectl set image deploy/$PROJECT_NAME $PROJECT_NAME=$HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER -n $NAMESPACE' } } } } stage('构建yami-shop-multishop镜像') { steps { withEnv(["PROJECT_NAME=yami-shop-multishop"]) { sh 'cd ./$PROJECT_NAME && docker build -t $HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER .' withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$HARBOR_CREDENTIAL_ID" ,)]) { sh 'echo "$DOCKER_PASSWORD" | docker login $HARBOR_ADDR -u "$DOCKER_USERNAME" --password-stdin' sh 'docker push $HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER' sh 'ssh root@192.168.1.5 kubectl set image deploy/$PROJECT_NAME $PROJECT_NAME=$HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER -n $NAMESPACE' } } } } stage('构建yami-shop-platform镜像') { steps { withEnv(["PROJECT_NAME=yami-shop-platform"]) { sh 'cd ./$PROJECT_NAME && docker build -t $HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER .' withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$HARBOR_CREDENTIAL_ID" ,)]) { sh 'echo "$DOCKER_PASSWORD" | docker login $HARBOR_ADDR -u "$DOCKER_USERNAME" --password-stdin' sh 'docker push $HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER' sh 'ssh root@192.168.1.5 kubectl set image deploy/$PROJECT_NAME $PROJECT_NAME=$HARBOR_ADDR/$NAMESPACE/$PROJECT_NAME:$BUILD_NUMBER -n $NAMESPACE' } } } } } } } }