Jenkins无网部署SpringCloud和Vue

本文详细介绍了如何使用Jenkins进行微服务、配置中心以及Vue项目的自动化部署,包括Jenkins的安装、Git配置、环境变量设定、Shell脚本的编写,以及远程主机的构建过程,旨在提高开发团队的协作效率。
摘要由CSDN通过智能技术生成

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

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

一、 Jenkins下载安装

下载Jenkins的war包Jenkins download and deployment

启动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. 构建测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杭州架构师

你的鼓励你创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值