node {

    def network = "yyy" // 容器网络
    // def publish_parameter ="-p#2828:2828" //运行命令的参数部分
    // def server = "s1"

    def mvnHome  // maven工具路径
    def javaHome  // java工具路径
    def projcetUrl = 'https://www.itzaj.com:325/kh/hswl/boot3.git'  // 项目地址
    def projectBranch = 'master'
    def packageVersion = "${BUILD_NUMBER}"  // 项目版本
    def harbor_url = "www.itzaj.com:338" //Harbor私服地址
    def harbor_username = "root"  //Harbor的用户名
    def harbor_password = "DFgo1234...."  //Harbor的密码
    def harbor_project_name = "yyy"  //Harbor的项目名称
    def serverArray = "${server}".split(',')

    // def packageName = "archer-boot"
    // def packageEnv = "prod"


        stage('引用全局工具') { // for display purposes
            mvnHome = tool 'MAVEN3'
            javaHome = tool 'JDK8'
        }

        stage('拉取代码') {
            checkout scmGit(branches: [[name: "*/${projectBranch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'd5f3ef0f-e6bb-4871-986f-1723c3b7ea64', url: "${projcetUrl}"]])
        }

   withEnv(["JAVA_HOME=$javaHome","MVN_HOME=$mvnHome"]) {


           stage('maven打包') {
               sh "$mvnHome/bin/mvn clean install -DskipTests -U"
           }



       stage('构建镜像') {
           //构建镜像
           sh "docker build -t ${packageName} --build-arg JAR_ENV=${packageEnv} -f ./ops/Dockerfile ."
       }

       stage('推送镜像') {
           //给镜像打标签
           sh "docker tag ${packageName}:latest ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
           //登录私服
           sh "docker login ${harbor_url} -u${harbor_username} -p${harbor_password}"
           //推送镜像
           sh "docker push ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
       }

       stage('清理本地镜像') {
           //删除镜像
           sh "docker rmi ${harbor_url}/${harbor_project_name}/${packageName}:${packageVersion}"
           sh "docker rmi ${packageName}:latest"
       }

    //}

}
  stage('发布') {
  def remoteCommand = """
            sh /data/jenkins_publish_1.sh ${packageName} ${packageVersion} ${harbor_url} ${harbor_project_name} ${harbor_username} ${harbor_password} ${publish_parameter}  ${network}  ${packageEnv}
            """
     echo remoteCommand
     for(int i=0;i<serverArray.size();i++){
     def currentServer = serverArray[i]
     sshPublisher(publishers: [sshPublisherDesc(configName: "${currentServer}", verbose: true, transfers: [sshTransfer(cleanRemote: false, execCommand: remoteCommand)])])
     }

  }





}