node {
  def mailto="601470458@qq.com,505127606@qq.com,154707516@qq.com,444949396@qq.com,714943302@qq.com" //邮件接收人员列表
  def containerName="adminweb" //容器名称
  def imageName="130.120.3.193/com.gzzn.omms/admin-web:1.2.0-SNAPSHOT" //镜像名称
  def dockerRegistry="http://130.120.3.193"
  def credentialsId="e41b57a4-436a-4617-817c-9e3f25a8a47f" //ssh证书id
  def deployHost="130.120.3.231" //发布到的主机
  
  try
  {
    checkout scm
    docker.image('teracy/angular-cli').inside() {
              stage('build'){
                  sh 'npm config set registry http://registry.npm.taobao.org/'
                  sh 'npm install'
                  sh 'ng build'
              }
    }


     stage('Image Build And Push'){
          docker.withRegistry("${dockerRegistry}", 'privateDockerId') {
                docker.build("${imageName}").push()
          }
     }



     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 96:80 --name ${containerName} ${imageName}",sudo: true
                 }
              }

    //发送邮件
     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
}