pipeline
{
    agent any
           environment {
                CREDENTIALS_ID ="jqtx-git"
                APPLICATION_URL="ssh://git@gitlab.jqtianxia.cn:2222/zhanhai/windows.git"
                APPLICATION_NAME = 'windows'
                APPLICATION_PORT = '8432'
                ENV_NAME = "prod"
                APPLICATION_SERVER_NAME='datagateway-1,'
                DOCKER_REGISTER = 'docker-rep-registry-vpc.cn-hangzhou.cr.aliyuncs.com'
                HARBOR_PROJECT ='prod'
                HARBOR_USER='BlackJoker@1907867481722754'
                HARBOR_PASSWORD='EYzYqxMZYfEwBB6Z'
                XXL_PORT= '9432'
            }

   stages {

        stage("Env Variables") {
                    steps {
                        sh "printenv"
                    }
                }

        stage ("拉取代码"){
            steps{
                script {
                 env.VERSION="${env.GIT_COMMIT}".substring(0,8)
                 env.PORT = "${env.APPLICATION_PORT}"
                 checkout([$class: 'GitSCM', branches: [[name: "${GIT_BRANCH}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId:"${CREDENTIALS_ID}", url: "${APPLICATION_URL}"]]])

                 sh "echo BRANCH is : ${env.GIT_BRANCH}"
                 sh "echo Build Version : ${env.VERSION}"
                 sh "echo Env name is : ${env.ENV_NAME}"
                 sh "echo Port is : ${env.PORT}"
                }
            }
        }
        stage ('构建'){
             steps {
              sh "/opt/apache-maven-3.8.1/bin/mvn   clean package -DskipTests=true docker:build"
            }
        }

        stage("发布镜像") {
              steps {
                   script{

                          sh "docker login -u ${env.HARBOR_USER} -p ${env.HARBOR_PASSWORD} ${env.DOCKER_REGISTER}"
                          env.DOCKER_IMAGES_NAME = "${env.DOCKER_REGISTER}/${env.HARBOR_PROJECT}/${APPLICATION_NAME}:${env.VERSION}"
                          sh "docker tag ${env.APPLICATION_NAME} ${env.DOCKER_IMAGES_NAME}"
                          sh "docker push ${env.DOCKER_IMAGES_NAME}"
                          sh "docker rmi ${env.APPLICATION_NAME}:latest"
                      }
                  }
              }

         stage("推送远程服务器") {
               steps {
                      script{
                                 def list=env.APPLICATION_SERVER_NAME.split(',')
                                 for(i in list ){
                                     println "启动参数 ${DOCKER_REGISTER} ${HARBOR_PROJECT} ${APPLICATION_NAME} ${VERSION} ${APPLICATION_PORT} ${XXL_PORT}"
                                     println "${i}"
                                     // 生产环境禁用 sshPublisher(publishers: [sshPublisherDesc(configName: i, transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "sh /root/coeus/docker.sh ${DOCKER_REGISTER} ${HARBOR_PROJECT} ${APPLICATION_NAME} ${VERSION} ${APPLICATION_PORT} ${XXL_PORT}", execTimeout: 0, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '*', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '/root/coeus/dd')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
                                 }
                           }
                      }
                 }
    }
}