diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..4c067e98 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM frolvlad/alpine-oraclejdk8:slim +MAINTAINER xiunai78 <154707516@qq.com> + +# Add the service itself +ARG JAR_FILE +ADD ${JAR_FILE} /usr/local/msgexchangeapi/myapp.jar + +EXPOSE 8080 + +ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/local/msgexchangeapi/myapp.jar"] \ No newline at end of file diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile new file mode 100644 index 00000000..c1b31450 --- /dev/null +++ b/jenkins/Jenkinsfile @@ -0,0 +1,68 @@ +node { + def mailto="154707516@qq.com" //邮件接收人员列表 + def containerName="msgexchangeapi" //容器名称 + def imageVersion="0.0.1-SNAPSHOT" + def imageName="130.120.3.193/com.gzzn.omms/msgexchangeapi:${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 +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index de87e14f..cd171d57 100644 --- a/pom.xml +++ b/pom.xml @@ -101,6 +101,26 @@ org.springframework.boot spring-boot-maven-plugin + + com.spotify + dockerfile-maven-plugin + 1.4.4 + + gzzn + Gzzn@2018 + + ${project.version} + + + + false + + 130.120.3.193/${project.groupId}/${project.artifactId} + + target/${project.build.finalName}.jar + + +