上篇写了关于流水线的基本语法和操作。今天记录一下流水线关于java项目的发布
回忆流程:
提交代码到gitlab----jenkins构建-----交给salve节点----(以后都在节点机器执行)
1.拉取代码---2.编译构建--3.测试--4.部署上线(部署前要备份原项目)
流水线的方式只不过是将传统的web界面配置改为 代码流程 一样去实施。分阶段的执行和打印日志。方便我们后期排错。
看下图:
配置的代码可以自己编写,也可以借助生成器生成。我们将传统的web配置的每个步骤,都搬到流水线语法中,生成每一步的代码即可。
1.拉取代码 (填写相应信息,生成)
2.编译构建 ,这个只是一个shell 执行的mvn命令
3.测试 (这里我只是输出一个信息,略)
4.部署上线(信息就和ssh构建发送文件web配置时的一样的填写,不明白的可以看之前的文章https://www.jianshu.com/p/1528fa9e4f30)
全部生成后。填入step块中。
pipeline {
agent {
label '112'
}
parameters {
gitParameter branch: '', branchFilter: '.*', defaultValue: 'master', description: '你选择的分支?', name: 'branch', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'PT_BRANCH'
}
stages {
stage('拉取git代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '$branch']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'd386c248-cf59-45c5-9731-b8f2d42411e9', url: 'http://192.168.1.112:85/webservice/java_web.git']]])
}
}
stage('编译构建') {
steps {
sh label: '', script: 'mvn clean package -Dmaven.test.skip=true'
}
}
stage('项目测试') {
steps {
echo 'Java Web Project Test is Suessful '
}
}
stage('部署上线') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'gitlab服务器', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''tomcat=/usr/local/tomcat
cd $tomcat/webapps
mv ROOT.war /data/backup/ROOT_$(date +"%F_%T").war
mv ly-simple-tomcat-0.0.1-SNAPSHOT.war ROOT.war
pid=$(ps -ef|grep tomcat|grep -v \'grep\'|awk \'{print $2}\')
[ -n "$pid" ] && kill -9 $pid
nohup /usr/local/tomcat/bin/startup.sh''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/usr/local/tomcat/webapps', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*.war')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
agent 和 parameters 分别是salve 节点和参数化。
完成后,第一次构建是初始化,以后进入正轨。
全程没有配置触发器,这个后面在更新。
最终点击构建,触发git参数化构建,选择完毕,构建完成。