node {
  def mailto="154707516@qq.com" //邮件接收人员列表
  def containerName="msgexchangeapi" //容器名称
  def imageVersion="0.0.1-SNAPSHOT"
  def imageName="130.120.3.193/com.gzzn.omms/msgexchange-api:${imageVersion}" //镜像名称
  def credentialsId="e41b57a4-436a-4617-817c-9e3f25a8a47f" //ssh证书id
  def deployHost="130.120.3.231" //发布到的主机
  def export=95  //暴露端口
  
  try
  {
    checkout scm
    docker.image('maven:3-alpine').inside('-v /root/.m2:/root/.m2') {
            stage('build'){
                sh 'mvn clean package dockerfile:build dockerfile:push -Dmaven.test.skip=true'
            }
            
            stage('deploy'){
               def remote = [:]
			   remote.name = "airport-dev"
               remote.host = "${deployHost}"
               remote.allowAnyHosts = true

               withCredentials([sshUserPrivateKey(credentialsId: "${credentialsId}", keyFileVariable: 'kfIdentity', passphraseVariable: 'pVariable', usernameVariable: 'userName')]) {
                 remote.user = userName
                 remote.identityFile = kfIdentity
                 
                 sshCommand remote: remote, command: "docker stop ${containerName}",sudo: true ,failOnError: false
                 sshCommand remote: remote, command: "docker rm ${containerName}",sudo: true ,failOnError: false
                 sshCommand remote: remote, command: "docker rmi ${imageName}",sudo: true ,failOnError: false
                 sshCommand remote: remote, command: "docker run -d -p ${export}:8080 --name ${containerName} ${imageName}",sudo: true
               }
            }
    } //end docker 
    
    //发送成功邮件
     emailext (
        subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新正常",
        body: """
			        详情：
			        SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'
			        状态：${env.JOB_NAME} jenkins 更新运行正常 
			        URL ：${env.BUILD_URL}
			        项目名称 ：${env.JOB_NAME} 
			        项目更新进度：${env.BUILD_NUMBER}
        """,
        to: "${mailto}",
        recipientProviders: [[$class: 'DevelopersRecipientProvider']]
        )
  }
  catch(e)
  {
      emailext (
            subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新失败",
            body: """
		                详情：
		                FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'             
		                状态：${env.JOB_NAME} jenkins 运行失败 
		                URL ：${env.BUILD_URL}
		                项目名称 ：${env.JOB_NAME} 
		                项目更新进度：${env.BUILD_NUMBER}
            """,
            to: "${mailto}",
            recipientProviders: [[$class: 'DevelopersRecipientProvider']]
            )
     throw e
  } //end catch
}