Jenkins 部署前后端分离构建多git项目,打包后远程部署服务器
当前项目为Pipeline 流水线项目前端使用Vue 通过nodejs打包后端spring boot 通过maven打包在一个Pipeline下进行两个git项目拉取、构建、备份、本地/远程部署下述pipeline script中包含pipeline多种独特的语法,请各位仔细查看。This project is parameterizedPipeline Scriptpipeline {agent
当前项目为Pipeline 流水线项目
前端使用Vue 通过nodejs打包
后端spring boot 通过maven打包
在一个Pipeline下进行两个git项目拉取、构建、备份、本地/远程部署
下述pipeline script中包含pipeline多种独特的语法,请各位仔细查看。
This project is parameterized
Pipeline Script
pipeline {
agent any
stages {
stage('前端代码拉取') {
steps {
//在一个pipeline下,拉取多个git项目,必须给每一个项目建立文件夹进行存放
sh "mkdir -p ./vue-project"
// pipeline语法下切换当前目录,注:不能使用cd命令进行切换,每次执行新的shell命令时会被重置
dir('./web-project') {
git branch: "${params.branch}", credentialsId: '650e9c98-ba94-4a06-b3e5-1b3d4f2be5ae', url: 'git://10.51.xxx.xxx/vue-project.git'
}
}
}
stage('后端代码拉取') {
steps {
sh "mkdir -p ./java-project"
dir('./java-project') {
git branch: "${params.branch}", credentialsId: '650e9c98-ba94-4a06-b3e5-1b3d4f2be5ad', url: 'git://10.51.xxx.xxx/java-project.git'
}
}
}
stage('前端构建') {
steps {
dir('./vue-project') {
sh "npm install"
sh "npm run build"
}
}
}
stage('后端构建') {
steps {
// 将vue项目build后的文件移动到java的resource目录下
sh "cp -rf vue-project/web java-project/demo/src/main/resources/templates"
dir('./java-project') {
sh "mvn -DskipTests -Dmaven.test.failure.ignore=true clean package"
}
}
}
stage('程序包备份') {
steps {
// 复制一份当前运行的jar为备份文件,补充bak+时间的后缀
sh "cp -f /home/data/java-project-0.0.1-SNAPSHOT.jar /home/data/java-project-0.0.1-SNAPSHOT.jar_bak\$(date '+%Y%m%d%H%M%S')"
}
}
stage('部署') {
steps {
script{
//如果目标服务器选择的是jenkins所部署的服务器,则只需对本机执行shell
// pipeline的if语法必须在script{}中编写
if ("${params.target}" == "10.51.xxx.xxx" ) {
// 将jenkins workspace里面的git拉取后打包的jar移动到工作目录
sh "cp -f java-project/demo/target/java-project-0.0.1-SNAPSHOT.jar /home/data"
// run.sh是我自己写的一个启动jar包的脚本,主要内容是nohup java -jar xxx.jar &的内容
sh "sh /home/data/run.sh start"
}else {
// scp将本地的jar复制到远程服务器,这里需要进行ssh免密登录的配置,不然会执行失败
sh '''
ssh ${target} "cp -f /home/data/java-project-0.0.1-SNAPSHOT.jar /home/data/java-project-0.0.1-SNAPSHOT.jar_bak\$(date '+%Y%m%d%H%M%S')"
scp java-project/demo/target/java-project-0.0.1-SNAPSHOT.jar ${target}:/home/data
ssh ${target} "sh /home/data/run.sh restart"
'''
}
}
}
}
}
}
Jenkins系列文章:
一、Jenkins 系列教程-史上最简单Jenkins教程,教你一天学会使用Jenkins利器
五、jenkins启动报错 Job for jenkins.service failed because the control process exited with error code.
六、jenkins启动成功,警告Warning: jenkins.service changed on disk.
九、Jenkins 报mvn:command not found、npm:command not found
十一、Jenkins 部署前后端分离构建多git项目,打包后远程部署服务器
十二、ssh-copy-id输入密码后Permission denied, please try again.
十三、Jenkins Publish over SSH、SSH免密登录、SCP免密传输、Jenkins远程传输文件、Jenkins远程部署
更多推荐
所有评论(0)