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

news2025/2/28 20:09:55

作者介绍:本人笔名姑苏老陈,从事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配置前端工程自动化部署进行了介绍,希望对大家有帮助,谢谢。
另外,在部署过程了,也遇到了一些问题。其中值得注意的一点是关于前端页面路由相关的问题。最终,通过修改前端代码中路由模式和路由实现方式,解决了问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

秋招Java后端开发冲刺——非关系型数据库篇(Redis)

一、非关系型数据库 1. 主要针对的是键值、文档以及图形类型数据存储。 2. 特点: 特点说明灵活的数据模型支持多种数据模型(文档、键值、列族、图),无需预定义固定的表结构,能够处理各种类型的数据。高扩展性设计为水…

2024年6月26日 (周三) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键,实现一键唤起、一键隐藏的 Windows 工具,并且支持窗口动态绑定快捷键(无需设置自动实现)。 土豆录屏: 免费、无录制时长限制、无水印的录屏软件 《Granblue Fantasy Versus: Risi…

使用方法——注意事项及好处

public class MethodDemo01 {public static void main(String[] args) {// 目标:掌握定义方法的完整性,清楚使用方法的好处。// 需求:假如现在有很多程序员都要进行2个整数求和的操作。//1、李工。int rs sun(10,20);System.out.println(&q…

web前端——VUE

1.什么是框架? ①概述 框架结构就是基本功能,把很多基础功能已经实现了、封装了。在基础语言之上,对各种基础功能进行封装,方便开发者,提高开发效率 ②前端框架 javaScript是原生的 vue.js: 是一个js框架&…

LLM AI工具和Delphi名称的起源

LLM AI工具和Delphi名称的起源 使用ChatGPT,直接或通过微软工具,以及其他基于llm的引擎。我很欣赏他们提供好的总结和比较的能力,并且还编写了一些样板代码。与此同时,当你问一些重要的问题时,你会得到一些令人惊讶的好…

Java初识集合(后续不断补充)

第一次更新时间:2024.6.26 集合概述 Java中的集合就像一个容器,专门用来存储Java对象(实际上是对象的引用,但习惯称为对象),这些对象可以是任意的数据类型,并且长度可变。其中,这些…

GPOPS-II教程(3): 航天器最优控制问题

文章目录 问题描述GPOPS代码main functioncontinuous functionendpoint function完整代码代码仿真结果 最后 问题描述 例子出自论文 Direct solution of nonlinear optimal control problems using quasilinearization and Chebyshev polynomials(DOI:1…

Interview preparation--elasticSearch倒排索引原理

搜索引擎应该具备哪些要求 查询速度快 优秀的索引结构设计高效率的压缩算法快速的编码和解码速度 结果准确 ElasiticSearch 中7.0 版本之后默认使用BM25 评分算法ElasticSearch 中 7.0 版本之前使用 TP-IDF算法 倒排索引原理 当我们有如下列表数据信息,并且系统…

产品聚焦 | 澳鹏语音合成TTS,让AI无限贴近真人

如果问华语乐坛近期产量最高的歌手是谁,“AI 周杰伦”、“AI 孙燕姿”一定有姓名——歌迷们先用歌手的音色训练AI,再通过模型将其他歌曲转换成以歌手音色“翻唱”的歌曲。语音合成 (Text To Speech,TTS) 就是其背后的技术支持。 作为生成式AI的一大重要…

天润融通助力立升净水,AI技术打造全天候智能客服体系

水,作为生命之源,其纯净度直接关系到人类的健康与社会的可持续发展。 在工业化和城市化进程的不断推进中,我们面临着土壤、空气等环境因素对饮用水质量的挑战。近期的公共卫生事件更是将饮用水安全问题推到了公众视野的中心,引发…

Docker(九)-Docker运行redis6.0.8容器实例

1.宿主机新建目录存放redis.conf文件 目的:运行redis容器实例时使用自己的配置文件2.运行redis容器实例 docker run -d -p 6379:6379 --privilegedtrue -v 【宿主机配置文件目录】:/etc/redis/redis.conf -v 【宿主机数据目录】:/data --nameredis6.0.8 redis:6.0…

python tarfile解压失败怎么解决

问题原因 在使用tarfile模块解压一份Linux服务器上的打包文件时,出现了错误提示:IOError:[Errno 22] invalid mode (wb) or filename. 经过检查,发现是因为打包文件中有文件名存在“:”符号,而window下的…

[深度学习] 变分自编码器VAE

变分自编码器(Variational Autoencoders, VAEs)是一种生成模型 Tutorial on Variational Autoencoders,它结合了概率图模型和深度学习,通过学习数据的潜在表示来生成新的数据样本。VAEs在数据生成、异常检测、数据压缩等领域具有广…

15款免费在线PS替代软件,操作简单一学就会!

Adobe Photoshop(PS)一直是图像编辑行业的领导者之一,应用领域非常广泛,可用于图像处理、摄影后期、平面设计、UI 设计、地图插图等。然而,对于业余设计师或对地图修复需求较低的普通用户来说,由于安装复杂,版本不统一…

从零开始做题:月圆之夜

题目 解题 Daedric alphabet Daedric The Daedric alphabet is used in a series of computer games known as The Elder Scrolls produced by Bethdesa Softworks. It first appeared in TESL: Battlespire in about 1997 and is used to write English.The Daedric alphab…

Stable Diffusion【进阶篇】:真人漫改之迪士尼风格定制

大家好,我是极客菌 关于真人漫改是一个应用比较多的图片定制方向,本文以及后面的章节我们结合一些具体的大模型或者LORA来更深入的实践一下。 一. 迪士尼风格 在SD的大模型中,实现迪士尼或者皮卡斯风格的图片,首推 Disney Pix…

MySQL进阶-索引-使用规则-最左前缀法则和范围查询

文章目录 1、最左前缀法则2、启动mysql3、查询tb_user4、查看tb_user的索引5、执行计划 profession 软件工程 and age31 and status 06、执行计划 profession 软件工程 and age317、执行计划 profession 软件工程8、执行计划 age31 and status 09、执行计划 status 010、执行…

从0-1搭建一个web项目vue3+vite+ts+element-plus(脚手架分析)

本章分析从0-1的搭建脚手架依赖 ObJack-Admin一款基于 Vue3.3、TypeScript、Vite3、Pinia、Element-Plus 开源的后台管理框架。在一定程度上节省您的开发效率。另外本项目还封装了一些常用组件、hooks、指令、动态路由、按钮级别权限控制等功能。感兴趣的小伙伴可以访问源码点个…

嵌入式调试接口

嵌入式系统的开发和调试是一项复杂的任务,需要强大的工具和接口来确保硬件和软件的正确性。在这个领域,JTAG(Joint Test Action Group)和SWD(Serial Wire Debug)是两个常用的调试接口标准,它们在…

使用 audit2allow 工具添加SELinux权限的方法

1. audit2allow工具的使用 audit2allow 命令的作用是分析日志,并提供允许的建议规则或拒绝的建议规则。 1.1 audit2allow的安装 sudo apt-get install policycoreutilssudo apt install policycoreutils-python-utils 1.2 auditallow的命令 命令含义用法-v--ve…