一、 相关插件安装
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