node { def mailto="601470458@qq.com,505127606@qq.com,154707516@qq.com,444949396@qq.com,714943302@qq.com" //邮件接收人员列表 def containerName="adminapi" //容器名称 def imageName="130.120.3.193/com.gzzn.omms/admin-api:0.0.1-SNAPSHOT" //镜像名称 def credentialsId="e41b57a4-436a-4617-817c-9e3f25a8a47f" //ssh证书id def deployHost="130.120.3.231" //发布到的主机 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 92: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 }