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
pipeline
{
agent any
environment {
CREDENTIALS_ID ="jqtx-git"
APPLICATION_URL="ssh://git@gitlab.jqtianxia.cn:2222/zhanhai/windows.git"
APPLICATION_NAME = 'windows'
APPLICATION_PORT = '8432'
ENV_NAME = "test"
APPLICATION_SERVER_NAME='test-portal'
DOCKER_REGISTER = 'docker-rep-registry-vpc.cn-hangzhou.cr.aliyuncs.com'
HARBOR_PROJECT ='loan'
HARBOR_USER='BlackJoker@1907867481722754'
HARBOR_PASSWORD='EYzYqxMZYfEwBB6Z'
XXL_PORT= '5265'
}
stages {
stage("Env Variables") {
steps {
sh "printenv"
}
}
stage ("拉取代码"){
steps{
script {
env.VERSION="${env.GIT_COMMIT}".substring(0,8)
env.PORT = "${env.APPLICATION_PORT}"
env.DOCKER_IMAGES_NAME = "${env.APPLICATION_NAME}-${env.ENV_NAME}-${env.VERSION}"
checkout([$class: 'GitSCM', branches: [[name: "${GIT_BRANCH}"]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId:"${CREDENTIALS_ID}", url: "${APPLICATION_URL}"]]])
sh "echo BRANCH is : ${env.GIT_BRANCH}"
sh "echo Build Version : ${env.VERSION}"
sh "echo Env name is : ${env.ENV_NAME}"
sh "echo Port is : ${env.PORT}"
sh "echo Image name is : ${env.DOCKER_IMAGES_NAME}"
}
}
}
stage ('构建'){
steps {
sh "/opt/apache-maven-3.8.1/bin/mvn clean package -DskipTests=true docker:build"
}
}
stage("发布镜像") {
steps {
script{
sh "docker login -u ${env.HARBOR_USER} -p ${env.HARBOR_PASSWORD} ${env.DOCKER_REGISTER}"
env.DOCKER_IMAGES_NAME = "${env.DOCKER_REGISTER}/${env.HARBOR_PROJECT}/${APPLICATION_NAME}:${env.VERSION}"
sh "docker tag ${env.APPLICATION_NAME} ${env.DOCKER_IMAGES_NAME}"
sh "docker push ${env.DOCKER_IMAGES_NAME}"
sh "docker rmi ${env.APPLICATION_NAME}:latest"
}
}
}
stage("推送远程服务器") {
steps {
script{
def list=env.APPLICATION_SERVER_NAME.split(',')
for(i in list ){
println "启动参数 ${DOCKER_REGISTER} ${HARBOR_PROJECT} ${APPLICATION_NAME} ${VERSION} ${APPLICATION_PORT} ${XXL_PORT}"
println "${i}"
sshPublisher(publishers: [sshPublisherDesc(configName: i, transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: "sh /root/themis/docker.sh ${DOCKER_REGISTER} ${HARBOR_PROJECT} ${APPLICATION_NAME} ${VERSION} ${APPLICATION_PORT} ${XXL_PORT}", execTimeout: 0, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '*', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '/root/themis/dd')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
}
}