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

目录
相关文章
|
4月前
|
存储 Dubbo API
SpringCloud工程部署启动
本节笔者带领大家完成了SpringCloud工程从0->1的搭建,当然你不想搭建也可以直接采用方案一,二者等效,至此读者们完成了一个微服务工程的搭建、部署、访问。同时在本节最后一章,笔者基于RestTemplate发起的http请求实现远程调用,实现当A系统想要获取B系统数据时的跨系统数据交互。然而RESTful API访问并不是微服务的唯一解决方案,如Dubbo的交互一样可以实现,希望读者们能不限于此。
|
14天前
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
33 5
|
2月前
|
jenkins Java 持续交付
Jenkins打包,发布,部署
Jenkins打包,发布,部署
249 0
|
4月前
|
Kubernetes jenkins 持续交付
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
jenkins学习笔记之二十一:k8s部署jenkins及动态slave
|
4月前
|
jenkins 持续交付 开发工具
"引爆效率革命!Docker+Jenkins+GIT+Tomcat:解锁持续集成魔法,一键部署Java Web应用的梦幻之旅!"
【8月更文挑战第9天】随着软件开发复杂度的增加,自动化变得至关重要。本文通过实例展示如何结合Docker、Jenkins、Git与Tomcat建立高效的持续集成(CI)流程。Docker确保应用环境一致性;Jenkins自动化处理构建、测试和部署;Git管理源代码版本;Tomcat部署Web应用。在Jenkins中配置Git插件并设置项目,集成Docker构建Tomcat应用镜像并运行容器。此外,通过自动化测试、代码质量检查、环境隔离和日志监控确保CI流程顺畅,从而显著提高开发效率和软件质量。
83 3
|
4月前
|
Java 开发工具 Maven
docker-compose部署SpringCloud
docker-compose部署SpringCloud
45 1
|
4月前
|
jenkins Java 持续交付
【一键搞定!】Jenkins 自动发布 Java 代码的神奇之旅 —— 从零到英雄的持续集成/部署实战秘籍!
【8月更文挑战第9天】随着软件开发自动化的发展,持续集成(CI)与持续部署(CD)已成为现代流程的核心。Jenkins 作为一款灵活且功能丰富的开源 CI/CD 工具,在业界应用广泛。以一家电商公司的 Java 后端服务为例,通过搭建 Jenkins 自动化发布流程,包括创建 Jenkins 项目、配置 Git 仓库、设置构建触发器以及编写构建脚本等步骤,可以实现代码的快速可靠部署。
175 2
|
4月前
|
负载均衡 jenkins 应用服务中间件
大规模部署下的 Jenkins 高可用性与负载均衡
【8月更文第31天】随着软件开发流程的加速,持续集成/持续交付(CI/CD)工具的重要性日益凸显。Jenkins 作为最受欢迎的 CI/CD 平台之一,为企业提供了强大的自动化构建和部署功能。然而,在大规模部署场景下,单一的 Jenkins 实例可能无法满足高可用性和性能的需求。本文将探讨如何设计和实施 Jenkins 高可用集群,以支持大型组织的需求,并通过负载均衡技术来提高系统的稳定性和响应速度。
308 0
|
4月前
|
jenkins Java 关系型数据库
jenkins学习笔记之十二:sonarqube9.9、SonarScanner4.8部署
jenkins学习笔记之十二:sonarqube9.9、SonarScanner4.8部署
|
4月前
|
JavaScript Windows
【Azure 应用服务】用App Service部署运行 Vue.js 编写的项目,应该怎么部署运行呢?
【Azure 应用服务】用App Service部署运行 Vue.js 编写的项目,应该怎么部署运行呢?