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

目录
相关文章
|
2月前
|
Kubernetes jenkins 持续交付
Artifact Hub在Kubernetes中的应用:部署Jenkins的脚本整理
以上步骤断言清晰明确地描述了如何通过Artifact Hub 使用Helm图表来部署Kubernetes 中得Jenkis 实例,并且提供了相应得Shell 脚本作为执行指南. 这样不但能够帮助用户快速地进行操作, 同时也能够通过自定义参数来满足不同用户需求.
119 5
存储 jenkins 持续交付
532 2
|
3月前
|
jenkins Java 持续交付
使用 Jenkins 和 Spring Cloud 自动化微服务部署
随着单体应用逐渐被微服务架构取代,企业对快速发布、可扩展性和高可用性的需求日益增长。Jenkins 作为领先的持续集成与部署工具,结合 Spring Cloud 提供的云原生解决方案,能够有效简化微服务的开发、测试与部署流程。本文介绍了如何通过 Jenkins 实现微服务的自动化构建与部署,并结合 Spring Cloud 的配置管理、服务发现等功能,打造高效、稳定的微服务交付流程。
471 0
使用 Jenkins 和 Spring Cloud 自动化微服务部署
|
4月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
311 0
|
8月前
|
jenkins Java Linux
Jenkins环境的部署及任务构建
以上就是Jenkins环境的部署及任务构建的全部内容。希望可以帮助你轻松上手Jenkins,让你的CI/CD之旅更加顺畅!
530 68
|
11月前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
426 7
|
运维 jenkins Java
Jenkins 自动化局域网管控软件构建与部署流程
在企业局域网管理中,Jenkins 作为自动化工具,通过配置源码管理、构建及部署步骤,实现了高效、稳定的软件开发与部署流程,显著提升局域网管控软件的开发与运维效率。
239 5
|
监控 前端开发 jenkins
Jenkins 在前端项目持续部署中的应用,包括其原理、流程以及具体的实现方法
本文深入探讨了Jenkins在前端项目持续部署中的应用,涵盖其基本原理、流程及具体实现方法。首先介绍了Jenkins的基本概念及其在自动化任务中的作用,随后详细解析了从前端代码提交到生产环境部署的全过程,包括构建、测试、部署等关键步骤。最后,强调了持续部署中的代码质量控制、环境一致性、监控预警及安全管理等注意事项,旨在帮助开发者高效、安全地实施持续部署。
315 5
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
374 2

热门文章

最新文章

推荐镜像

更多