【服务器部署】Jenkins配置前端工程自动化部署

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。

本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快、更好的入门JAVA后端开发工作。

文章目录

    • 一、前言
    • 二、准备资源
    • 三、Nginx配置
    • 四、代码配置文件修改
    • 五、Jenkins全局工具配置
    • 六、配置项目的Jenkins任务
    • 七、执行项目的Jenkins任务,实现自动化部署
    • 八、总结

一、前言

本文介绍如何通过Jenkins配置前端工程进行自动化部署。这里以若依Spring-cloud项目中ruoyi-ui前端工程为示例,介绍如何通过Jenkins配置若依ruoyi-ui前端工程,实现自动化发布部署到服务器上。

首先,梳理一下,我们要实现的自动化发布部署的流程如下:

1)首先,使用git从远程代码仓库中拉取最新的代码;

2)之后,使用node.js环境、npm包管理工具对代码进行编译打包;

3)最后,把编译后的代码使用ansible运维工具同步到nginx服务器上。至此,自动化发布部署完成。

二、准备资源

1)环境要求

CentOS7.9 64位、Git1.8、Jenkins2.260、node-v16.20.2、npm8.19.4、nginx-1.24.0、ansible2.9.27

2)服务器资源

阿里云ECS服务器172.22.187.36(安装Jenkins等第三方应用)

阿里云ECS服务器172.22.187.40(部署nginx和ruoyi-ui项目)

3)服务器上应用安装清单

Jenkins发布工具,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/138182743

nodejs和npm,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/139301480

nginx服务器,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/137740079

Ansible运维工具,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/138136832

4)其他资源

代码仓库使用码云gitee,RuoYi-Cloud代码下载地址:https://gitee.com/y_project/RuoYi-Cloud(PS:前端工程指RuoYi-Cloud工程中的ruoyi-ui子工程)

三、Nginx配置

首先,找到Nginx配置文件nginx.conf;

之后,配置前端页面和后端API接口访问代理。其中,前端页面访问路径统一配置使用“/ui”,后端API接口访问路径统一配置使用“/cms-api”。

在这里插入图片描述

修改后的完整的配置文件nginx.conf内容如下:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid     logs/nginx.pid;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;


   #负载均衡
   upstream cmsGateway {
	server localhost:8080;
   }


    server {
        listen       80;
        server_name  监听的服务器域名或IP;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

      #后端API接口访问路径统一配置使用/cms-api
      location /cms-api/ {
       proxy_pass http://cmsGateway/;
       proxy_connect_timeout 600;
       proxy_read_timeout 600;
       proxy_send_timeout 600;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
      }


      #前端页面访问路径统一配置使用/ui
      location /ui {
        alias  /usr/local/web/ruoyi/kenny;
        index  index.html index.htm;
      }
    }

}

修改完成后,重载配置,使配置生效。

./nginx -s reload

四、代码配置文件修改

之后,对前端工程ruoyi-ui中部分代码配置文件进行修改;
首先,修改路由器模式,这里使用hash模式,即页面访问路径带#的方式。
在router>index.js文件中,路由模式由history修改为hash模式;
在这里插入图片描述
之后,修改路由懒加载方式。
开发环境、测试环境、生产环境中路由懒加载实现方式,统一使用require方式实现,而不是使用import方式;
在modules>permisson.js中修改懒加载实现方式。
在这里插入图片描述
之后,修改开发环境、测试环境、生产环境配置文件,后端API接口访问根路径统一为“/cms-api”,跟nginx中配置保持一致;
在这里插入图片描述
之后,修改响应拦截器中跳转路径为“/ui”,跟nginx中配置保持一致;
在这里插入图片描述
之后,修改登录后首页右上角注销后跳转路径为“/ui”,跟nginx中配置保持一致;
在这里插入图片描述
至此,代码配置文件修改完成。

五、Jenkins全局工具配置

下面进行Jenkins全局工具配置。

首先配置nodejs信息;
在这里插入图片描述
之后,配置git信息;
在这里插入图片描述
至此,Jenkins全局工具配置完成。

六、配置项目的Jenkins任务

下面开始新建和配置Jenkins任务。

首先,新增一个Jenkins任务,填写任务名称,选择自由风格的软件项目,点击确定。
在这里插入图片描述
之后,填写任务描述;
在这里插入图片描述
之后,填写保持构建信息;
在这里插入图片描述

之后,填写git源码管理信息;
在这里插入图片描述

之后,填写构建环境信息;(PS:nodejs16指前面Jenkins全局工具配置中的信息)
在这里插入图片描述
之后,填写执行的shell脚步内容。
在这里插入图片描述
完整的shell脚本内容如下:

#npm config set设置仓库地址脚本,执行一次即可
#npm config set registry http://registry.npm.taobao.org

#npm install安装依赖包脚本,执行一次即可
#npm install

#编译打包
npm run build:stage

#同步到nginx服务器上
ansible 172.22.187.40 -m copy -a "src=/root/.jenkins/workspace/ruoyi-ui/dist/  dest=/usr/local/web/ruoyi/kenny"

最后,点击应用和保存,完成任务创建。
在这里插入图片描述

七、执行项目的Jenkins任务,实现自动化部署

Jenkins任务创建完成后,下面开始执行Jenkins任务构建,进行自动化部署。
首先在任务列表中,选择要构建的任务,之后,点击构建。
在这里插入图片描述
开始构建后,控制台输出构建信息。
在这里插入图片描述
在这里插入图片描述
如果控制台最后输出SUCCES字样,说明部署成功了。之后,打开浏览器,输入地址:http://外网IP/ui/#/login 访问页面。
(PS:默认账号为admin/admin123)
在这里插入图片描述
至此,Jenkins配置前端工程自动化部署完成。

八、总结

以上通过部署若依开源ruoyi-ui项目,对Jenkins配置前端工程自动化部署进行了介绍,希望对大家有帮助,谢谢。
另外,在部署过程了,也遇到了一些问题。其中值得注意的一点是关于前端页面路由相关的问题。最终,通过修改前端代码中路由模式和路由实现方式,解决了问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/757524.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【eMTC】eMTC 的SIB1-BR是如何发送

1 概述 eMTC的系统消息发送和接收与LTE的有很大不同,主要原因是在某一个时刻终端只接收1.4M的带宽,无法接收LTE的大带宽,比如20M带宽的LTE小区,eMTC终端,在某一个子帧,只能够接收其中的1.4M 带宽。PBCH本身…

解锁亚马逊、Temu、速卖通成功密码:重视评论,做好测评自养号

在亚马逊平台上,产品评论至关重要,因其能帮助其他买家做出购买决策。然而,亚马逊上的买家留评率却很低。有趣的是,存在一些买家,他们并未实际购买产品,却能发表评论。这究竟是怎么回事呢?接下来…

最新!最全!元启发优化算法215个测试函数综述!【免费获取论文】

目录 1.摘要2.主要内容3.参考文献4.文章获取 1.摘要 这篇综述论文旨在利用对不同基准测试函数的研究,评估元启发优化算法(Metaheuristic optimization algorithms, MH)的性能。MH的性能是通过不同的数学基准测试函数和各种实际工程设计问题来评估,这些基…

【项目实战】Android Studio简单实现图书馆借阅管理系统

希望文章能给到你启发和灵感~ 点赞收藏关注 支持一下吧~ 阅读指南 序幕一、基础环境说明1.1 硬件环境1.2 软件环境 二、整体设计2.1 数据库逻辑处理:2.2 登录/注册模块2.3 功能界面初始化:2.4 图书管理模块2.5 图书租借服务2.6 读…

第一节:如何开发第一个spring boot3.x项目(自学Spring boot 3.x的第一天)

大家好,我是网创有方,从今天开始,我会记录每篇我自学spring boot3.x的经验。只要我不偷懒,学完应该很快,哈哈,更新速度尽可能快,想和大佬们一块讨论,如果需要讨论的欢迎一起评论区留…

MATLAB | 怎样绘制这样的环形柱状图

Hey, 各位又是好久不见,最近忙到后台消息都有些来不及看,非常抱歉,今天带来一个环形柱状图绘制的简易小代码,绘制效果如下: 下面直接给出完整代码,替换一下数据即可,代码都有注释的: 完整代码 …

OLMo:真正完全开源的大模型

最近,又有一家机构AI2(Allen Institute for AI)开源了一个LLM:OLMo,它的英文全称就叫Open Language Model。相比之前开源的大模型,OLMo的独特之处是完全开源,除了训练的模型,OLMo还开…

数据结构速成--查找

由于是速成专题,因此内容不会十分全面,只会涵盖考试重点,各学校课程要求不同 ,大家可以按照考纲复习,不全面的内容,可以看一下小编主页数据结构初阶的内容,找到对应专题详细学习一下。 目录 …

Unity制作一个简单抽卡系统(简单好抄)

业务流程:点击抽卡——>播放动画——>显示抽卡面板——>将随机结果添加到面板中——>关闭面板 1.准备素材并导入Unity中(包含2个抽卡动画,抽卡结果的图片,一个背景图片,一个你的展示图片) 2.给…

qt 开发笔记 动态链接库应用

1.概要 1.1 需求 库有两种,动态库和静态库,这里说的是动态库;动态库的加载方式有两种,一直是静态的一种是动态的,这里的静态加载是指静态加载动态,是一种加载动态库的方式。也有一种动态加载的方式&#…

c++ 设计模式 的课本范例(中)

(10)单例模式 singleton 。整个应用程序执行时,只有一个单例模式的对象。 class GameConfig // 懒汉式,啥时候用单例对象,啥时候创建。 { private:static GameConfig* ptrGameConfig; // 这些函数都作为私有函数&…

多表查询实训

前提 本篇博客,我将通过讲解例题的方式,带大家进一步掌握多表查询的使用规则和使用技巧 正文 前提 先建好表 表1 salgrade (薪资等级表) 表2 emp(员工信息表) 表3 dept(部门信息表),插入相…

图形处理单元(GPU)在现代计算中的应用与挑战(研究论文框架)

摘要:随着高性能计算需求的日益增长,图形处理单元(GPU)已从专业的图形渲染处理器转变为具有高性能并行处理能力的多功能计算平台。本文将探讨GPU的核心优势、编程模型、在不同领域的应用以及面临的挑战和限制。此外,还将讨论GPU技术的未来发展趋势和潜在的研究机会。 关键…

算法-位运算基础

文章目录 前置知识1. 交换两个数2. 比较两个数的大小3. leetcode268 寻找缺失的数字4. leetcode136 只出现一次的数字5. leetcode260 只出现一次的数字|||6. leetcode137 只出现一次的数字||7. 2/3的幂8. 大于等于该数字的最小2的幂9. leetcode201 数字范围按位与10. 位运算中分…

昇思MindSpore学习笔记4--数据集 Dataset

昇思MindSpore学习笔记4--数据集 Dataset 摘要: 昇思MindSpore数据集Dataset的加载、数据集常见操作和自定义数据集方法。 一、数据集 Dataset概念 MindSpore数据引擎基于Pipeline 数据预处理相关模块: 数据集Dataset加载原始数据,支持文本…

C#测试调用DotnetSpider爬取网页内容

微信公众号“DotNet”的文章《.NET快速实现网页数据抓取》介绍了调用开源网页爬取模块DotnetSpider爬取cnblog网站文章的基本方式。之前学习过使用HtmlAgilityPack抓取并分析网页内容,DotnetSpider也依赖HtmlAgilityPack模块,不过前者属于轻量、高效的爬…

基于OrangePi AIpro + owncloud 5分钟搭建一个私有网盘

OrangePi AIpro自带镜像系统已预装了docker,这里我们直接基于docker安装owncloud。 准备 切换用户: HwHiAiUser 默认密码:Mind123 su HwHiAiUser 创建文件夹 sudo mkdir /home/SummerGao/owncloud-docker-server 切换至刚创建的文件夹下…

1,Windows-本地Linux 系统(WSL)

目录 第一步电脑设置 第二步安装Ubuntu 第三文件传递 开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arc…

AI赋能影视解说:Rap说唱玩法拆解!

在影视解说的领域,竞争一直非常激烈,众多创作者纷纷涌入这个热门的赛道。为了在众多声音中脱颖而出,创新成为了关键。最近,一种结合AI技术的解说方式——Rap说唱解说,以其新颖的形式和高效的创作过程,赢得了…

input子系统学习(一)

1、输入子系统框架 2、编写一个简单的设备驱动层代码 #include<linux/module.h> #include<linux/init.h> #include<linux/input.h> #include<linux/time.h>struct input_dev *my_input_dev;static void timer_function(struct timer_list *t); DEFINE…