功能:svn+编译+上传服务器+备份回滚

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}"
}
}
}
}