需求:前后端在一个应用包,前端基于node、使用gulp打包,后端使用maven打包;配置jenkins实现一键从svn拉取代码、打前端、封装后端、部署。
1、jenkins配置
jenkins的安装、配置,网上有很多相关指导,也不是本文的重点,飘过。
因为前端包部分需要在jenkins工作空间里面处理,所以我是使用linux主机自建jenkins环境,docker部署的jenkins不好处理,反正我之前是没在docker环境里处理好。
在jenkins“系统管理”-“系统设置”-“SSH Servers”里面增加两个server,一个是jenkins主机、一个是应用部署的主机,配置好账号、密码;
代码管理基于svn,配置好svn拉取最新源代码就好(url后面加@HEAD)。
勾选“Delete workspace before build starts”,彻底清理工作空间。
前端包处理脚本:
项目“构建环境”-“Send files or execute commands over SSH before the build starts”
选择jenkins主机,“Exec command”配置sudo sh /root/gulp.sh
上传jar包及部署脚本:
项目“构建环境”-“Send files or execute commands over SSH after the build runs”
选择应用部署主机,“Source files”配置xxxxproject/target/xxxx.jar
"Exec command"配置sh /xxxx/jenkins_auto_update.sh
2、前端包处理
1)node及npm的安装
参考:https://blog.youkuaiyun.com/qq_40809549/article/details/80434176
2)、安装gulp
安装gulp时,如果项目的package.json配置不好会安装报错,采取如下方式安装:
npm install cnpm -g --registry=https://registry.npm.taobao.org
cnpm --version
全局安装gulp:
cnpm install -g gulp
gulp --version
3)、配置node_modules路径及补充安装node模块
vi /etc/profile 加入
NODE_PATH=/usr/local/node/lib/node_modules
export NODE_PATH
source /etc/profile
4)、编译项目
在项目目录下执行
gulp project_test_generate #project_test_generate为gulpfile.js里定义的task
可能报错部分模块不存在,缺什么装什么
node模块安装(在node目录下执行)
npm install -g gulp-watch
npm install -g gulp-concat
npm install -g gulp-tmod
npm install -g gulp-plumber
npm install -g gulp-jshint
npm install -g jshint
npm install -g gulp-uglify
npm install -g gulp-clean-css
npm install -g gulp-rename
.........
5)编写上述jenkins配置中用到的前端包处理脚本gulp.sh
#!/bin/bash
source /etc/profile
cd /var/lib/jenkins/workspace/project/
gulp project_test_generate
chown -R jenkins:jenkins /var/lib/jenkins/workspace/project/
安全起见,我不能用root用户去配置jenkins,而且linux主机上的jenkins用户本身也不具备登陆条件;于是新建了一个应用用户ooxx,为ooxx配置了sudo权限,可以执行sudo sh /root/gulp.sh
sudo的配置参考:https://blog.youkuaiyun.com/qq_40809549/article/details/83268811
如此,前端包的处理就ok了。
3、编写上述jenkins配置中用到的部署处理脚本jenkins_auto_update.sh
cat jenkins_auto_update.sh
#!/bin/sh
cd /xxxx/project
##jenkins上传文件的时候是连着项目目录一起上传的
cp ./ooxx-project-test/target/ooxx-project-test-1.0.0-SNAPSHOT.jar ./
ps -ef |grep jar|grep project|awk '{print $2}' |xargs kill -9
nohup java -jar ooxx-project-test-1.0.0-SNAPSHOT.jar 1>project.log 2>1 &
ok,如果各个环节没有掉链子的话,你就可以点击“立即构建”了!