修改构建脚本。动态获取pom中的项目信息及版本

This commit is contained in:
zhouxiunai
2019-04-28 14:32:55 +08:00
parent 5402b9396a
commit d4202bec94
+70 -36
View File
@@ -1,39 +1,73 @@
node { /*
def mailto="154707516@qq.com" //邮件接收人员列表 * 依赖插件:
def containerName="msgexchangeapi" //容器名称 * SSH Pipeline Steps
def imageVersion="0.8.1-SNAPSHOT" * Pipeline Utility Steps
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 pipeline {
{ agent any
checkout scm
docker.image('maven:3-alpine').inside('-v /root/.m2:/root/.m2') { environment {
stage('build'){ credentialsId = 'e41b57a4-436a-4617-817c-9e3f25a8a47f'
sh 'mvn clean package dockerfile:build dockerfile:push -Dmaven.test.skip=true' deployName = 'airport-dev'
deployHost = '130.120.3.231'
mailto = '154707516@qq.com'
dockerProtocol = "http"
dockerRegistry = '130.120.3.193'
containerName="msgexchangeapi"
export=95
GROUP = readMavenPom().getGroupId()
ARTIFACTID = readMavenPom().getArtifactId()
VERSION = readMavenPom().getVersion()
PACKAGING = readMavenPom(). getPackaging()
} }
stage('deploy'){ stages {
def remote = [:] stage('maven build') {
remote.name = "airport-dev" agent {
remote.host = "${deployHost}" docker {
remote.allowAnyHosts = true image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
withCredentials([sshUserPrivateKey(credentialsId: "${credentialsId}", keyFileVariable: 'kfIdentity', passphraseVariable: 'pVariable', usernameVariable: 'userName')]) { reuseNode true
remote.user = userName }
remote.identityFile = kfIdentity }
steps {
sshCommand remote: remote, command: "docker stop ${containerName}",sudo: true ,failOnError: false sh 'mvn clean package -Dmaven.test.skip=true'
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
//发送成功邮件 stage('docker build And Push'){
steps {
script{
docker.withRegistry("${env.dockerProtocol}://${env.dockerRegistry}", 'privateDockerId') {
docker.build("${env.dockerRegistry}/${env.GROUP}/${env.ARTIFACTID}:${env.VERSION}","--no-cache --build-arg JAR_FILE=target/${env.ARTIFACTID}-${env.VERSION}.${env.PACKAGING} .").push()
}
}
}
}
stage('deploy') {
steps {
withCredentials([sshUserPrivateKey(credentialsId: "${env.credentialsId}", keyFileVariable: 'kfIdentity', passphraseVariable: 'pVariable', usernameVariable: 'userName')]) {
sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
command: "docker stop ${env.containerName}",sudo: false ,failOnError: false)
sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
command: "docker rm ${env.containerName}",sudo: false ,failOnError: false)
sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
command: "docker rmi ${env.dockerRegistry}/${env.GROUP}/${env.ARTIFACTID}:${env.VERSION}",sudo: false ,failOnError: false)
sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
command: "docker run -d -p ${env.export}:8080 --name ${env.containerName} ${env.dockerRegistry}/${env.GROUP}/${env.ARTIFACTID}:${env.VERSION}",sudo: false ,failOnError: true)
}
}
}
}
post {
success {
emailext ( emailext (
subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新正常", subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新正常",
body: """ body: """
@@ -44,12 +78,12 @@ node {
项目名称 ${env.JOB_NAME} 项目名称 ${env.JOB_NAME}
项目更新进度:${env.BUILD_NUMBER} 项目更新进度:${env.BUILD_NUMBER}
""", """,
to: "${mailto}", to: "${env.mailto}",
recipientProviders: [[$class: 'DevelopersRecipientProvider']] recipientProviders: [[$class: 'DevelopersRecipientProvider']]
) )
} }
catch(e)
{ failure {
emailext ( emailext (
subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新失败", subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新失败",
body: """ body: """
@@ -60,9 +94,9 @@ node {
项目名称 ${env.JOB_NAME} 项目名称 ${env.JOB_NAME}
项目更新进度:${env.BUILD_NUMBER} 项目更新进度:${env.BUILD_NUMBER}
""", """,
to: "${mailto}", to: "${env.mailto}",
recipientProviders: [[$class: 'DevelopersRecipientProvider']] recipientProviders: [[$class: 'DevelopersRecipientProvider']]
) )
throw e }
} //end catch }
} }