Jenkins无网部署SpringCloud和Vue

简介: Jenkins无网部署SpringCloud和Vue

 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。SpringCloud是时下里最火的框架,由于springcloud涉及众多微服务,对于开发团队而言,使用Jenkins做部署测试,开发环境分支将极大的提升团队合作效率。


      本文将会讲解如何部署微服务、配置中心、Vue(无网环境),不仅是在同一主机远程主机部署也可以(微服务项目与Jenkins不在同一机器),更新配置中心,自动化部署Vue项目,其中涉及到比较多的脚本。可以自己灵活变动。


一、 Jenkins下载安装

下载Jenkins的war包https://www.jenkins.io/download/

启动Jenkins:java -jar /root/SoftWare/Jenkins/jenkins.war --httpPort=8899

nohup java -jar /root/SoftWare/Jenkins/jenkins.war --httpPort=8899 >/root/SoftWare/Jenkins/jenkins.log 2>&1 &

二、 更新配置中心文件

1. 新建任务

新建一个自由风格的Jenkins任务

注意任务名字,Jenkins会自动在自己的工作空间下生成这个任务名字的文件夹,当我们从git上拉代码下来的时候会自动放在这个工作空间下。

20200921210033142.png


2. 配置Git

在【源码管理】配置git上的地址

3. 配置环境变量

在Jenkins机器新增$WORKSPACE环境变量

#用户环境变量
vim ~/.bash_profile
#在文件末尾加上
export PATH=$PATH:/usr/local/php/bin
#全局环境变量。我们在这里添加$WORKSPACE的环境变量
vim /etc/profile
在文件末尾
export PATH=$PATH:/usr/local/php/bin
export WORKSPACE=$PATH:/root/.jenkins/workspace
#设置立即生效
source /etc/profile
#查看所有变量
env
#查看单个变量
echo $PATH

4.  构建Shell

【构建】中填写我们的shell脚本

其中$WORKSPACE是我们在Jenkins中新增的系统变量。找到我们的Jenkins的工作空间。

#!/bin/bash
#author eric
#time 2020-09-22
. /etc/profile
time=`date +%Y_%m_%d-%H:%M:%S`
project_dir=$WORKSPACE/springcloud-config
cd $project_dir
remote_server=192.168.1.8
remote_user=root
remote_dir=/springcloud-config/properties/
if [ $? -eq 0 ]
then
   cd $project_dir && pwd && rsync -avz properties/ $remote_user@$remote_server:$remote_dir
   echo $time
else
   echo "update faild "
   echo $time
fi

5. 构建项目

Git上传代码到配置中心,然后点击构建项目。去192.168.1.8的/springcloud-config/properties/目录查看文件的更新时间

三、 部署微服务

1. 新建任务

新建一个自由风格的Jenkins任务

2. 配置Git

在【源码管理】配置git上的地址

3. 准备脚本

首先我们要明确代码的来源流向。Jenkins从GitLab上拉去代码到Jenkins的工作空间即$WORKSPACE,然后我们执行打包命令mvn clean package -Dmaven.test.skip=true或者使用Gradle的gradle build进行代码构建,生成微服务的jar包,然后把jar包拷贝到我们发布的文件夹,这个文件夹中有停止之前线程的脚本和启动新jar包的脚本。这样一个闭环就形成了。这里我们有几个比较有用的脚本。stop.sh、start.sh、cutlog.sh这三个脚本都放在我们发布jar包的地方。最终的样子就是,这个目录会有这三个脚本和我们的微服务的jar包还有nohup.out我们jar包生成日志文件。通过cutlog.sh我们可以把大日志切分。


stop.sh停止微服务的进程

#!/bin/bash
#author eric
#time 2020-09-22
num=`ps -ef|grep  base-server-web | grep -v grep |awk '{print $2}'|wc -l`
if [ $num -ne 1 ]
then 
    echo "go next step"
else
   ps -ef|grep  base-server-web | grep -v grep |awk '{print $2}'|xargs kill -9 
fi

start.sh启动微服务

#!/bin/bash
#author eric
#time 2020-09-22
nohup java -Xms256m -Xmx512m -jar /home/testdir/base_server/*.jar --spring.profiles.active=test   & 

cutlog.sh切分日志

#!/bin/bash
#author  eric
#time 2020-0922
#version 0.0.1
time=`date +%Y-%m-%d --date="-1 day"`
cd /home/testdir/base_server
echo $time
cp nohup.out nohup.out-$time && echo "" > nohup.out
sleep 3
sh stop.sh
sleep 2
sh start.sh  >>./nohup.out

4. 【构建环境】

在构建环境中勾选Execute shell script on remote host using ssh。然后填入脚本

cd  /home/testdir/spirngcloud_base
sh stop.sh
cd /home/testdir/spirngcloud_base
sh start.sh   >>./nohup.out

20200922140451193.png

5. 同一机器构建Shell

#!/bin/bash
#author eric
#time 2020-09-22
#version v0.0.1
. /etc/profile
project_name=base-server-web
project_dir=$WORKSPACE/base_service/base-server-web 
cd $project_dir  && gradle build 
if [ $? -eq 0 ]
then
    echo "gradle build success "
else 
    echo -e '\033[31m[ error ] gradle build faild \033[0m' && exit 1
fi
sleep 2
base_dir=/home/testdir/base_server
cp $WORKSPACE/base_service/base-server-web/build/libs/*.jar $base_dir
cd $base_dir
#nohup java -Xms256m -Xmx512m -jar /home/testdir/base_server/*.jar &  >/dev/null  2>&1
sh stop.sh

6. 远程机器构建Shell

#!/bin/bash
#author caoyx 
#time 2020-06-02
#version v0.0.3
. /etc/profile
project_name=app-server-web
#project_dir=/root/.jenkins/workspace/test01/builder-server-web
project_dir=/root/.jenkins/workspace/ningxia-ma-user/user-server-web
cd $project_dir  && gradle build 
if [ $? -eq 0 ]
then
    echo "gradle build success "
else 
    echo -e '\033[31m[ error ] gradle build faild \033[0m' && exit 1
fi
sleep 2
remote_server=192.168.1.8
remote_user=root
remote_dir=/home/testdir/ma_user
# scp jar to remote server 
echo " start rsync jar to remote server "
new_jar=$project_dir/build/libs/user-server-web-1.0.jar
cd $project_dir/build/libs/ && pwd && rsync -avz $new_jar  $remote_user@$remote_server:$remote_dir 
if [ $? -eq 0 ]
then
   echo "rsync jar to remote server sucess !"
else 
   echo -e '\033[31m[ error ] rsync jar to remote server faild \033[0m' && exit 1
fi

四、 部署Vue项目

1. 新建任务

新建一个自由风格的Jenkins任务

2. 配置Git

在【源码管理】配置git上的地址

3. 无网环境

如果是无网环境,在我们配置完git地址后,执行构建,然后在$WORKSPACE中就可以看到我们的vue项目文件夹,进入后,需要把我们vue的node_module拷贝到这个文件夹中。

4. 同一机器构建Shell

#!/bin/bash
#author eric
#time 2020-09-22
. /etc/profile
time=`date +%Y_%m_%d-%H:%M:%S`
project_dir=$WORKSPACE/web_user
cd $project_dir  && yarn run build
if [ $? -eq 0 ]
then
   #aim_dir=/usr/local/apply/nginx/html
   aim_dir=/home/application/nginx/html
   cd $aim_dir  && mv web web_$time
   cd  $project_dir && cp -r dist  $aim_dir 
   cd $aim_dir && mv dist web
   #cd $aim_dir 
   echo $time
else 
   echo " update faild"
   echo $time
fi

5. 远程机器构建Shell

#!/bin/bash
#author eric
#time 2020-09-22
. /etc/profile
time=`date +%Y_%m_%d-%H:%M:%S`
project_dir=$WORKSPACE/web_user
cd $project_dir  && yarn run build
remote_server=192.168.1.8
remote_user=root
remote_dir=/home/frontmanager/nginx/html/userdist/
if [ $? -eq 0 ]
then
   cd $project_dir && pwd && rsync -avz dist/  $remote_user@$remote_server:$remote_dir
   echo $time
else
   echo "update faild "
   echo $time
fi

6. 构建测试

目录
相关文章
|
1天前
|
传感器 人工智能 监控
Springcloud+Vue智慧工地管理云平台源码 AI智能识别
“智慧工地管理平台”以现场实际施工及管理经验为依托,针对工地现场痛点,能在工地落地实施的模块化、一体化综合管理平台。为建筑公司、地产公司、监管单位租赁企业、设备生产厂提供了完整的数据接入和管理服务。
66 2
|
1天前
|
监控 JavaScript 前端开发
如何进行 Vue 项目的构建和部署?
如何进行 Vue 项目的构建和部署?
68 2
|
1天前
|
JavaScript 前端开发 应用服务中间件
Vue项目如何进行部署?是否有遇到部署服务器后刷新404问题?
Vue项目如何进行部署?是否有遇到部署服务器后刷新404问题?
120 0
|
1天前
|
移动开发 JavaScript 应用服务中间件
vue打包部署问题
Vue项目`vue.config.js`中,`publicPath`设定为"/h5/party/pc/",在线环境基于打包后的`dist`目录,而非Linux的`/root`。Nginx代理配置位于`/usr/local/nginx/nginx-1.13.7/conf`,包含两个相关配置图。
vue打包部署问题
|
1天前
|
安全 Java Docker
|
1天前
|
JavaScript Java jenkins
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
107 0
|
1天前
|
jenkins Java 持续交付
详解如何使用Jenkins一键打包部署SpringBoot项目
详解如何使用Jenkins一键打包部署SpringBoot项目
137 0
|
1天前
|
小程序
基于Uniapp+SpringBoot+Vue的电影交流平台小程序设计与实现(源码+lw+部署文档+讲解等)
基于Uniapp+SpringBoot+Vue的电影交流平台小程序设计与实现(源码+lw+部署文档+讲解等)
61 0
基于Uniapp+SpringBoot+Vue的电影交流平台小程序设计与实现(源码+lw+部署文档+讲解等)
|
1天前
|
JavaScript jenkins 应用服务中间件
Jenkins + Github + Nginx 自动化部署 Vue 项目
Jenkins + Github + Nginx 自动化部署 Vue 项目
186 0
|
1天前
|
安全 JavaScript 搜索推荐
【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅
【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅