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

news2024/11/24 12:29:25

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

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

文章目录

    • 一、前言
    • 二、准备资源
    • 三、配置项目的阿里云镜像仓库
    • 四、编写项目dockerfile和docker-compose文件
    • 五、编写项目发布shell脚本
    • 六、配置项目的Jenkins任务
    • 七、执行项目的Jenkins任务,实现自动化部署
    • 八、总结

一、前言

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

在这里插入图片描述

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

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

2)之后,使用jdk、maven对代码进行编译打包;

3)之后,根据定义的dockfile文件,生成对应的docker镜像;

4)之后,把docker镜像推送到harbor远程镜像仓库中;

5)之后,从harbor远程镜像仓库中拉取docker镜像;

6)最后,使用对应的docker镜像,启动docker容器。至此,自动化发布部署完成。

二、准备资源

1)环境要求

CentOS7.9 64位、JDK1.8、Tomcat8.5.87、maven3.3.1、Git1.8、Jenkins2.260

2)服务器资源购买

阿里云ECS服务器172.22.187.36(安装Jenkins等第三方应用)、阿里云ECS服务器172.22.187.40(部署Spring-cloud项目)、阿里云RDS Mysql服务器(部署项目数据库)

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

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

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

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

Docker容器工具,安装参考见本专栏链接:https://blog.csdn.net/u012171005/article/details/137435897

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

4)其他资源

代码仓库使用码云gitee,RuoYi-Cloud代码下载地址:https://gitee.com/y_project/RuoYi-Cloud

镜像仓库使用阿里云仓库,阿里云仓库地址:https://cr.console.aliyun.com/cn-shanghai/instances

三、配置项目的阿里云镜像仓库

首先,登录阿里云控制台,创建一个自己的镜像仓库实例;
在这里插入图片描述

之后,新增一个项目对应的命令空间;
在这里插入图片描述

之后,为项目中不同的微服务,创建对应的镜像仓库;
在这里插入图片描述

最后,当我们把镜像推送到仓库中后,可以在“镜像版本”列表中,查看到对应的推送记录;

在这里插入图片描述

四、编写项目dockerfile和docker-compose文件

dockerfile文件定义如下:(以ruoyi-system后端服务为示例)

# 基础镜像
FROM  openjdk:1.8

# author
MAINTAINER ruoyi

# 挂载目录
VOLUME /home/ruoyiv

# 创建目录
RUN mkdir -p /home/ruoyi

# 指定路径
WORKDIR /home/ruoyi

# 复制jar文件到路径
COPY ./ruoyi-modules-system.jar /home/ruoyi/ruoyi-modules-system.jar

# 启动系统服务
ENTRYPOINT java ${JAVA_OPTS}  -jar ruoyi-modules-system.jar

docker-compose文件定义如下:(以ruoyi-system后端服务为示例)

version: "2"
services:

   ruoyi-system:
      restart: always
      image: registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system
      ports:
      - "9201:9201"
      container_name: ruoyi-system
      mem_limit: 1.5g
      environment:
      - JAVA_OPTS=-Xmx1g -Xms1g
      - SPRING_PROFILES_ACTIVE=dev

五、编写项目发布shell脚本

docker镜像创建、推送、启动相关的Shell脚本定义如下:(以ruoyi-system后端服务为示例)

####步骤一、开始服务器A操作

#cd到项目jar包所在目录下
cd  /root/.jenkins/workspace/ruoyi-system/ruoyi-modules/ruoyi-system/target

#创建docker镜像
docker  build  -t  registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest -f  /root/.jenkins/workspace/ruoyi-system/ruoyi-modules/ruoyi-system/src/main/resources/dockerfile .

#登录docker镜像仓库,PS:可以先手执行镜像仓库的登陆命令,后续就不需要重复登录了
docker login --username=你的镜像仓库登陆账号名  registry-vpc.cn-shanghai.aliyuncs.com

#给docker镜像打tag
docker tag registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system   registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest

#推送docker镜像到仓库中
docker push registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest

####步骤二、通过ansible工具,开始服务器B操作

#拉取docker镜像
ansible 172.22.187.40  -m command  -a  'docker pull registry-vpc.cn-shanghai.aliyuncs.com/ruoyi_project/ruoyi-system:latest'

#使用镜像启动docker容器
ansible 172.22.187.40  -m command  -a  'docker-compose -f  /opt/ruoyi/docker-compose.yml up -d ruoyi-system'

六、配置项目的Jenkins任务

下面开始新建和配置Jenkins任务。(以ruoyi-system后端服务为示例)

首先,新增一个Maven任务;
在这里插入图片描述
之后,输入任务名称,选择任务类型为Maven,点击确定;
在这里插入图片描述

之后,填写任务描述;
在这里插入图片描述

之后,配置丢弃旧的构建参数;
在这里插入图片描述
之后,配置源码管理中git参数;
在这里插入图片描述
之后,配置Maven编译参数;

在这里插入图片描述

之后,配置要执行的shell脚本;
在这里插入图片描述

最后,点击应用保存按钮,完成任务创建。

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

Jenkins任务创建完成后,下面可以使用Jenkins的自动构建功能,执行自动化发布任务。

选择要发布的任务,点击立即构建。

在这里插入图片描述

之后,查看控制台输出信息;
在这里插入图片描述

最后,如果控制台输出Success字样,说明自动构建成功,发布任务完成了。
在这里插入图片描述

八、总结

以上介绍了如何通过Jenkins配置后端工程进行自动化部署。关于Jenkins自动化部署,在实际的项目中,一般会涉及到多个节点服务器、服务高可用等等情况,需要对shell脚本进一步做优化处理。

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

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

相关文章

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密数据恢复流程

网络技术的不断应用与发展,为企业的生产运营带来了极大便利,越来越多的企业依赖网络开展各项工作业务,网络也大大提升了企业的生产运营效率,但网络是一把双刃剑,在为企业提供便利的同时,也为企业的数据安全…

IDEA生成测试类

方法一 具体流程: 选中要生成的测试类------------>选择code选项------------>选择Generate选项---------->选择test选项---------->选择要生成的方法 第一步: 光标选中需要生成测试类的类 找到code选项 选中Generate选项 选中test选项 选中你要生成的测试…

【目标检测】基于深度学习的酒瓶表面瑕疵缺陷检测(yolov5算法,6个类别,附代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内) 路虽远,行则将至;事虽难,做…

运行游戏提示dll文件丢失,分享多种有效的解决方法

在我们日常频繁地利用电脑进行娱乐活动,特别是畅玩各类精彩纷呈的电子游戏时,常常会遭遇一个令人困扰的问题。当我们满怀期待地双击图标启动心仪的游戏程序,准备全身心投入虚拟世界时,屏幕上却赫然弹出一条醒目的错误提示信息&…

springboot+vue生鲜超市销售管理系统

项目效果演示视频: springbootvue的生鲜商城的设计与实现 生鲜超市销售管理系统springbootvue 基于JAVAVueSpringBootMySQL的生鲜超市销售系统,包含了商品档案、商品进货、商品销售、供应商、活动管理、消息通知模块,还包含系统自带的用户管理、部门管理…

多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测

多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测 目录 多输入多输出 | Matlab实现WOA-LSSVM鲸鱼算法优化最小二乘支持向量机多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现WOA-LSSVM鲸鱼算法优化…

Linux系统----信号(万字文章超级详细并且简单易学附有实操shell指令图及注释!)

绪论​ “Do one thing at a time, and do well.”,本章开始Linux系统其中信号是学习操作系统的基本下面将会讲到什么是信号、信号的多种产生方式、信号如何保存的、信号如何处理的、以及一些信号的细节。话不多说安全带系好,发车啦(建议电脑…

AS-V1000 视频监控平台,如何实现设备上线、下线时产生告警,及时通知管理人员

目录 一、客户需求 (一)客户需求 (二)掌握设备状况的意义 1、实时故障检测与预警 2、提升系统可靠性 3、优化资源配置 4、增强安全保障 5、提升管理效率 二、产品介绍 三、系统配置 (一)实现告警…

[网络安全] apt攻击是什么?

什么是APT攻击:APT攻击的主要特征包括:APT攻击的防御措施:零基础入门学习路线视频配套资料&国内外网安书籍、文档网络安全面试题 什么是APT攻击: APT(Advanced Persistent Threat,高级持续性威胁&…

大小写不规范引起的LVS问题

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 往期文章链接: LVS常见问题解析 综合网表不规范,大小写混用常导致LVS问题,比如两个端口clk和CLK只有大小写区别,PR工具是可以识别为两个端口的,只不过Calibre LVS默认不区分大小写,会报错。 …

mac安装java

在 macOS 上配置 Java 环境变量是相对简单的。你需要做的是设置 JAVA_HOME 环境变量,并将 bin 目录添加到 PATH 变量中。本篇是最详细的教程,细化每个步骤过程,保姆级的教程! 1. 下载JDK安装包 到oracle官网下载适合的JDK安装包…

外包干了4个月,技术退步明显

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能…

关于前后端一体项目SpringSecurity框架登陆失效,HTTPS重定向登陆页面异常的问题

现有环境是基于SpringBoot 2.6.8,然后是前后台一体化的项目。 安全框架使用的是内置版本的SpringSecurity。 场景:用户登陆,系统重启导致用户的session失效。但前端并没有跳转到对应的登录页,在HTTP的环境下可以正常跳转&#x…

Linux——DNS的配置和使用

一、DNS 域名服务器,实现IP和域名的转换 DNS 协议运行在 UDP 协议之上,使用端口号 53 2.结构 DNS 的命名空间的结构如下: 1. 根域名( Root Domain ): 根域名位于 DNS 命名空间的顶部,它表示…

[leetcode] 58. 最后一个单词的长度

文章目录 题目描述解题方法倒序遍历java代码复杂度分析 题目描述 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a…

OpenHarmony实战开发—进程间通讯

版本:v3.2 Beta5 进程模型 OpenHarmony的进程模型如下图所示: 应用中(同一包名)的所有UIAbility、ServiceExtensionAbility、DataShareExtensionAbility运行在同一个独立进程中,即图中绿色部分的“Main Process”。…

leaftjs+turfjs+idw纯前端实现等值面绘图+九段线

最近有个绘制等值面图的需求。我们一般的实现路径是: 1.后台绘图,用surfer绘制好,给前端调用叠加到地图。 2.后台用python绘图,绘制好给前端调用,叠加到地图。 3.后台进行插值计算、地图裁剪、最终生成geojson文件或…

电商技术揭秘三十四:智能风控业务架构浅析

相关系列文章 电商技术揭秘相关系列文章合集(1) 电商技术揭秘相关系列文章合集(2) 电商技术揭秘二十八:安全与合规性保障 电商技术揭秘二十九:电商法律合规浅析 电商技术揭秘三十:知识产权保…

vue 3 —— 笔记(模板语法,响应式变量)

模板语法: Vue 使用一种基于 html 的模板语法,使我们能声明式将其组件实例绑定到呈现的 dom 上 文本插值 基础数据绑定形式 双大括号 会替换相应组件实例 msg 属性的值 原始html 双大括号会将数据解释为纯文本 不是html 想插入html 使用 v-html 指令 &…

短距离无线通信-Zigbee

阅读引言: 最近在复习之前做过的项目, 所以向将zigbee这个协议分享出来, 一方面可以给需要的人看到, 一方面也方便自己整理zigbee的知识。 目录 一、什么是 ZigBee? 二、Zigbee 通信频段和信道 三、Zigbee协议和Zigbee协议栈 …