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

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产生了写一个博客专栏想法,介绍当前互联网企业JAVA项目开发如何快速入门。
本文收录于《30天企业JAVA项目开发实战入门》专栏,该专栏内容以当前互联网软件企业中的项目实战为线索,介绍企业JAVA项目开发中涉及到的开发流程、技术、工具、规范要求等等。帮助想从事JAVA开发的大学生或新人,更快的、更好的入门JAVA后端开发工作。

文章目录

一、前言

本文介绍如何通过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后端服务为示例)

bash 复制代码
# 基础镜像
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后端服务为示例)

bash 复制代码
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后端服务为示例)

bash 复制代码
####步骤一、开始服务器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脚本进一步做优化处理。

相关推荐
荒Huang3 分钟前
Linux挖矿病毒(kswapd0进程使cpu爆满)
linux·运维·服务器
海阔天空_201314 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
桥田智能16 分钟前
气爪在自动化装配线中是如何应用的?
运维·自动化
九河云40 分钟前
如何选择适合的AWS EC2实例类型
服务器·云计算·aws
Lovely_red_scarf1 小时前
Jenkins系列
jenkins
Tassel_YUE2 小时前
网络自动化04:python实现ACL匹配信息(主机与主机信息)
网络·python·自动化
其乐无涯2 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
写bug的小屁孩2 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布2 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
紅色彼岸花2 小时前
第六章:DNS域名解析服务器
运维·服务器