调整构建脚本,动态pom获取名字及版本信息。

This commit is contained in:
zhouxiunai
2019-04-28 17:34:08 +08:00
parent 582208bdb4
commit dd26709ef0
+101 -64
View File
@@ -1,65 +1,102 @@
node { /*
def mailto="601470458@qq.com,505127606@qq.com,154707516@qq.com,444949396@qq.com,714943302@qq.com" //邮件接收人员列表 * 依赖插件:
def containerName="adminapi" //容器名称 * SSH Pipeline Steps
def imageName="130.120.3.193/com.gzzn.omms/admin-api:1.2.0-SNAPSHOT" //镜像名称 * Pipeline Utility Steps
def credentialsId="e41b57a4-436a-4617-817c-9e3f25a8a47f" //ssh证书id *
def deployHost="130.120.3.231" //发布到的主机 */
try { pipeline {
checkout scm agent any
docker.image('maven:3-alpine').inside('-v /root/.m2:/root/.m2') {
stage('build'){ environment {
sh 'mvn clean package dockerfile:build dockerfile:push -Dmaven.test.skip=true' credentialsId = 'e41b57a4-436a-4617-817c-9e3f25a8a47f'
} deployName = 'airport-dev'
deployHost = '130.120.3.231'
stage('deploy'){ mailto = '154707516@qq.com'
def remote = [:] dockerProtocol = "http"
remote.name = "airport-dev" dockerRegistry = '130.120.3.193'
remote.host = "${deployHost}" containerName="adminapi"
remote.allowAnyHosts = true export=92
withCredentials([sshUserPrivateKey(credentialsId: "${credentialsId}", keyFileVariable: 'kfIdentity', passphraseVariable: 'pVariable', usernameVariable: 'userName')]) { GROUP = readMavenPom().getGroupId()
remote.user = userName ARTIFACTID = readMavenPom().getArtifactId()
remote.identityFile = kfIdentity VERSION = readMavenPom().getVersion()
PACKAGING = readMavenPom(). getPackaging()
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 stages {
sshCommand remote: remote, command: "docker run -d -p 92:8080 --name ${containerName} ${imageName}",sudo: true stage('maven build') {
} agent {
} docker {
}//end docker image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
//发送成功邮件 reuseNode true
emailext ( }
subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新正常", }
body: """ steps {
详情: sh 'mvn clean package -Dmaven.test.skip=true'
SUCCESSFUL: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' }
状态:${env.JOB_NAME} jenkins 更新运行正常 }
URL ${env.BUILD_URL}
项目名称 ${env.JOB_NAME} stage('docker build And Push'){
项目更新进度:${env.BUILD_NUMBER} steps {
""", script{
to: "${mailto}", docker.withRegistry("${env.dockerProtocol}://${env.dockerRegistry}", 'privateDockerId') {
recipientProviders: [[$class: 'DevelopersRecipientProvider']] docker.build("${env.dockerRegistry}/${env.GROUP}/${env.ARTIFACTID}:${env.VERSION}","--no-cache --build-arg JAR_FILE=target/${env.ARTIFACTID}-${env.VERSION}.${env.PACKAGING} .").push()
) }
} }
catch(e) }
{ }
emailext (
subject: "'${env.JOB_NAME} [${env.BUILD_NUMBER}]' 更新失败",
body: """ stage('deploy') {
详情: steps {
FAILED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' withCredentials([sshUserPrivateKey(credentialsId: "${env.credentialsId}", keyFileVariable: 'kfIdentity', passphraseVariable: 'pVariable', usernameVariable: 'userName')]) {
状态:${env.JOB_NAME} jenkins 运行失败 sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
URL ${env.BUILD_URL} command: "docker stop ${env.containerName}",sudo: true ,failOnError: false)
项目名称 ${env.JOB_NAME} sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
项目更新进度:${env.BUILD_NUMBER} command: "docker rm ${env.containerName}",sudo: true ,failOnError: false)
""", sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
to: "${mailto}", command: "docker rmi ${env.dockerRegistry}/${env.GROUP}/${env.ARTIFACTID}:${env.VERSION}",sudo: true ,failOnError: false)
recipientProviders: [[$class: 'DevelopersRecipientProvider']] 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: true ,failOnError: true)
throw e }
}//end catch }
}
}
post {
success {
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: "${env.mailto}",
recipientProviders: [[$class: 'DevelopersRecipientProvider']]
)
}
failure {
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: "${env.mailto}",
recipientProviders: [[$class: 'DevelopersRecipientProvider']]
)
}
}
} }