Linux上GitLab+Jenkins实现Vue、Spring Cloud项目的自动部署
一、 相关插件安装
1.安装GitLab相关插件
2.NodeJS插件
3.Maven 插件
4.手动安装插件
网络或者其他原因,可能导致插件安装失败。
可以采用手动安装的方式。
手动下载jenkins插件:jenkins插件下载地址:http://mirror.xmission.com/jenkins/plugins/ ,一般下载下来后缀为hpi,如下载下来是zip的,记得把后缀修改为hpi
打开jenkins,点击 系统管理——>插件管理——>高级,选择本地文件,点击提交。
二、Jenkins相关配置
1.全局工具配置
系统管理-->全局工具配置:
将服务器安装的Git、Maven以及Node 起一个名字进行配置。(也可用Jenkins带的“自动安装”,不过网络差的话可能很慢)。
2.系统配置,设置 GitLab
系统管理-->系统设置,找到GitLab,填写上名称与GitLab并写上主机地址,点击【添加】来添加证书。
这里我们选择添加 GitLab API token
登陆GitLab
点击右上角头像-->设置-->访问令牌
输入令牌名称,然后勾选api,点击下方 创建个人访问令牌,复制token,并保存下来。因为下次就不可见了。然后在Jenkins中粘贴
三、创建vue前端任务
1.创建任务
输入任务名称,点选“构建一个自由风格的软件项目”,点击确定。
2.general
这里描述就随便写写,丢弃旧的构建可以选上,节省空间。
3.源码管理
选择"Git",将项目git连接复制,并点击【添加】添加git用户名/密码;
输入指定分支。
4.构建触发器
这里我们点选,当GitLab提交触发,点击下面的【高级】
拉到下面创建一个token
创建完成后,进入GitLab上的前端项目,点击【设置】-->【集成】
将 上面Build when a change is pushed to GitLab. GitLab webhook URL: 后面跟的项目链接 与 刚刚 生成的token输入,点击【Add webhook】
添加成功后,可以点选测试,Push events 如果弹出 200 说明测试通过。
5.构建环境
构建环境选择node,然后NodeJS Installation 这里下拉选择上面在全局系统配置中设置的node
6.构建
构建这里,我们选择shell脚本。
npm -v cnpm install // 下载 node moudles node build/build.js //构建 tar -zcvf dist.tar.gz ./dist //将生成的dist 打成压缩包 mv ./dist.tar.gz /var/www/vue; //移动到Nginx配置的项目目录下面 cd /var/www/vue; rm -fr ./static tar -zxvf ./dist.tar.gz ./; //解压 刚才打的dist压缩包 mv ./dist/* ./ //删除 rm -fr ./dist rm -fr ./dist.tar.gz;
然后点击保存,就可以了。
四、创建Sping Cloud 任务
创建Spring Cloud 跟创建 Vue前端任务类似,只是构建环境可以不选,然后更改构建中的shell。
首先为每一个服务创建一个通用的脚本,模板如下:
#spring boot Jar包目录 APP_NAME=/root/app/springBoot/robotcenter.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh robotcenter.sh [start|stop|restart|status]" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动方法 start(){ is_exist if [ $? -eq 0 ]; then echo "${APP_NAME} is already running. pid=${pid}" else #这个dontKillMe 是一定要加的,不然jenkins会杀死这个进程,导致服务退出 BUILD_ID=dontKillMe #将日志输出到robotcenter.out,自己命名 nohup java -jar ${APP_NAME} >robotcenter.out 2>&1 & fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid else echo "${APP_NAME} is not running" fi } #输出运行状态 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is NOT running." fi } #重启 restart(){ stop sleep 5 start } #根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;; esac
然后编写构建shell脚本
#首先关闭所有的服务 sh /home/shell/eureka.sh stop sh /home/shell/zuul.sh stop sh /home/shell/web.sh stop #进入jenkins的工作空间 对应的Spring Cloud项目地址 cd /var/lib/jenkins/workspace/Project/ # clean install 清除之前的包,并将所有模块 打包 mvn clean mvn install # 进入每个需要部署服务的target目录,将jar包移动到指定目录 cd /var/lib/jenkins/workspace/Project/Project-server-eureka/ cd target/ mv Project-server-eureka-0.0.1-SNAPSHOT.jar /home/Project/ cd /var/lib/jenkins/workspace/Project/Project-server-zuul/ cd target/ mv Project-server-zuul-0.0.1-SNAPSHOT.jar /home/Project/ cd /var/lib/jenkins/workspace/Project/Project-server-web/ cd target/ mv Project-server-web-0.0.1-SNAPSHOT.jar /home/Project/ #启动每个服务的启动脚本 sh /home/shell/eureka.sh start sh /home/shell/zuul.sh start sh /home/shell/web.sh start