From e95dd9d4017e15e1fcda7a1acea5933c150649af Mon Sep 17 00:00:00 2001 From: zhouxiunai <154707516@qq.com> Date: Wed, 7 Nov 2018 11:00:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=82=AE=E4=BB=B6=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jenkins/Jenkinsfile | 100 +++++++++++++++++++++++++++++--------------- 1 file changed, 67 insertions(+), 33 deletions(-) diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile index 22d0171..43efba7 100644 --- a/jenkins/Jenkinsfile +++ b/jenkins/Jenkinsfile @@ -6,39 +6,73 @@ node { 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' + } + } - 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']] + ) } - - - 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 - } - } + 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 } \ No newline at end of file