102 lines
4.1 KiB
Groovy
102 lines
4.1 KiB
Groovy
/*
|
||
* 依赖插件:
|
||
* SSH Pipeline Steps
|
||
* Pipeline Utility Steps
|
||
*
|
||
*/
|
||
|
||
pipeline {
|
||
agent any
|
||
|
||
environment {
|
||
credentialsId = 'e41b57a4-436a-4617-817c-9e3f25a8a47f'
|
||
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()
|
||
}
|
||
|
||
stages {
|
||
stage('maven build') {
|
||
agent {
|
||
docker {
|
||
image 'maven:3-alpine'
|
||
args '-v /root/.m2:/root/.m2'
|
||
reuseNode true
|
||
}
|
||
}
|
||
steps {
|
||
sh 'mvn clean package -Dmaven.test.skip=true'
|
||
}
|
||
}
|
||
|
||
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: true ,failOnError: false)
|
||
sshCommand(remote: [ name: "${env.deployName}" ,host: "${env.deployHost}" ,allowAnyHosts: true,user: "${userName}",identityFile: "${kfIdentity}" ] ,
|
||
command: "docker rm ${env.containerName}",sudo: true ,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: true ,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: true ,failOnError: true)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
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']]
|
||
)
|
||
}
|
||
}
|
||
} |