1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| pipeline { agent any parameters { choice choices: ['deploy', 'rollback'], description: '''deploy:发布 rollback:回滚''', name: 'deploy_env' text defaultValue: '0', description: '回滚版本号,发布时忽略该参数', name: 'version' } environment{ // svn代码下载地址 svnUrl = "http://192.168.18.241/svn/dev/teamfort-school-BasicInfo" // maven 插件名 mvnHome = tool 'maven3.5.4' // 上传地址 uploadFilePath = '/home/project/teamfort/teamfort-school-BasicInfo' // 过滤前缀 rPrefix = 'target/' // 本地文件地址 sourceFiles = 'target/teamfort-school-BasicInfo.jar' } stages{ stage('CheckOutSvn'){ steps{ script{ if("$deploy_env" == 'deploy'){ checkout changelog: false, poll: false, scm: [$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[cancelProcessOnExternalsFail: true, credentialsId: '192.168.18.241', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote:"${svnUrl}"]], quietOperation: true, workspaceUpdater: [$class: 'CheckoutUpdater']] } } } } stage('Build'){ steps{ script{ if("$deploy_env" == 'deploy'){ sh "${mvnHome}/bin/mvn clean package -DskipTests" } } } } stage('Deoloy-Rollback'){ steps{ sh '''case $deploy_env in deploy) echo "deploy: $deploy_env" ;; rollback) echo "rollback: $deploy_env" echo "version: $version" rm -rf targer cp -rf ${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${version}/archive/* . pwd && ls ;; *) echo "USAGE $0 <deploy|rollback>" esac''' } } stage('UploadAndStart-Jar'){ steps{ sshPublisher(publishers: [sshPublisherDesc(configName: '39.108.187.59', transfers: [sshTransfer(excludes: '', execCommand:"cd ${uploadFilePath} \n"+'''
echo '#!/bin/bash jarName="teamfort-school-BasicInfo.jar" #jar包名 echo "jar包名:"$jarName PID=$(ps -ef | grep $jarName | grep -v grep | awk '"'"'{ print $2 }'"'"') if [ -z "$PID" ] then echo 未找到需要关闭的程序:$jarName else echo 开始关闭程序 $jarName : $PID kill -9 $PID
fi echo 开始启动程序 source /etc/profile nohup java -jar $jarName > nohup.out & ' >run.sh chmod +x run.sh ./run.sh ''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: "${uploadFilePath}", remoteDirectorySDF: false, removePrefix: "${rPrefix}", sourceFiles: "${sourceFiles}")], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)]) } } stage('Backup'){ steps{ archiveArtifacts "${sourceFiles}" } } } }
|