Jenkins 自动化部署实战案例分享

news/2024/12/13 3:22:51/

一. 项目部署和 DevOps

1.1. 传统的开发模式

在传统的开发模式中,开发的整个过程是按部就班就行:

在这里插入图片描述

但是这种模式存在很大的弊端:
  • 工作的不协调:开发人员在开发阶段,测试和运维人员其实是处于等待的状态。等到测试阶段,开 发人员等待测试反馈 bug,也会处于等待状态。
  • 线上 bug 的隐患:项目准备交付时,突然出现了 bug,所有人员需要加班、等待问题的处理;

1.2. DevOps 开发模式

DevOps 是 Development 和 Operations 两个词的结合,将开发和运维结合起来的模式:
在这里插入图片描述
在这里插入图片描述

1.3. 持续集成和持续交付

伴随着 DevOps 一起出现的两个词就是持续集成和持续交付(部署):

  • CI 是 Continuous Integration(持续集成);
  • CD 是两种翻译:Continuous Delivery(持续交付)或 Continuous Deployment(持续部署);

持续集成CI:

在这里插入图片描述

持续交付和持续部署:

持续交付:手动上传服务器

在这里插入图片描述

持续部署:自动化部署到服务器上

在这里插入图片描述

1.4. 自动化部署流程

二. 搭建服务器环境

jenkins__50">2.1. jenkins 自动化部署

2.1.1. 安装 Java 环境

Jenkins 本身是依赖 Java 的,我安装了 Java17 的环境

dnf search java-17-openjdk
dnf install java-17-openjdk

Java1.8 的话,需要安装一下:

dnf search java-1.8
dnf install java-1.8.0-openjdk.x86_64
2.1.2. 安装 Jenkins

因为 Jenkins 本身是没有在 dnf 的软件仓库包中的,所以我们需要连接 Jenkins 仓库:

  • wget 是 Linux 中下载文件的一个工具,-O 表示输出到某个文件夹并且命名为什么文件;
  • rpm:全称为 The RPM Package Manage ,是 Linux 下一个软件包管理器;

注意:不同Java版本的Jenkins版本不同,需要使用不同的命令进行安装:

在这里插入图片描述

  • Java17:
    sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
    sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
    
  • Java8:
    wget –O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhatstable/jenkins.repo
    # 导入GPG密钥以确保您的软件合法
    rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
    # 或者
    rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
    

注意 下载Jenkins的位置/etc/yum.repos.d/jenkins.repo 不可以随意更改必须这个位置

Java8 还要多一步操作,Java17 已经处理好了
编辑一下文件/etc/yum.repos.d/jenkins.repo
可以通过 vim 编辑更改以下 baseurl,去除后面多余的,

[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1

安装 Jenkins

dnf install jenkins

启动 Jenkins 的服务:

systemctl start jenkins  # 启动
systemctl status jenkins # 查看状态
systemctl enable jenkins # 设置开机启动

注意:Jenkins默认使用 8080 端口提供服务,所以需要加入到安全组中:

2.1.3. Jenkins 用户

我们后面会访问 centos 中的某些文件夹,默认 Jenkins 使用的用户是 jenkins,可能会没有访问权限,
所以我们需要修改一下它的用户:

Java8 的操作:
修改文件的路径:/etc/sysconfig/jenkins

在这里插入图片描述

Java17 的操作:
修改文件的路径:/usr/lib/systemd/system/jenkins.service

在这里插入图片描述

[jenkins]
name=Jenkins-stable
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=

之后需要重启一下 Jenkins:

# 也可以将Jenkins添加到root组中
sudo usermod -a -G root jenkins
systemctl restart jenkins
2.1.4. Jenkins 配置
  1. 打开浏览器,输入:http://xxxx:8080/
  2. 获取输入管理员密码:
    cat /var/lib/jenkins/secrets/initialAdminPassword
  3. 选择安装推荐的插件:
2.1.5. Jenkins 任务

UI界面我用Java17版本对应版本的Jenkins,Java1.8差不多的

新建任务:

在这里插入图片描述

配置项目

在这里插入图片描述

在这里插入图片描述

构建触发器:

在这里插入图片描述

这里的触发器规则是这样的:
定时字符串从左往右分别是:分 时 日 月 周

#每半小时构建一次OR每半小时检查一次远程代码分支,有更新则构建
H/ 30 * * * *
#每两小时构建一次OR每两小时检查一次远程代码分支,有更新则构建
H H/ 2 * * *
#每天凌晨两点定时构建
H 2 * * *
#每月 15 号执行构建
H H 15 * *
#工作日,上午 9 点整执行
H 9 * * 1 - 5
#每周1,3,5,从8:30开始,截止19:30,每 4 小时 30 分构建一次
H/ 30 8 - 20 / 4 * * 1 , 3 , 5
构建环境:

注意:我们需要搭建 Node 的环境

  1. 第一步:安装 Node 的插件;
  2. 第二步:配置 Node 的环境;

在这里插入图片描述

第一步:安装 Node 的插件

在这里插入图片描述

第二步:配置 Node 的环境

在这里插入图片描述

构建执行的任务:
pwd # 查看当前路径node -v # 查看node版本
npm -v # 查看npm版本npm config set registry=https://registry.npmmirror.com  # 安装淘宝镜像源npm install    # 安装依赖包
npm run build  # 构建项目pwd # 查看当前路径
echo '构建成功' # 输出构建成功
ls # 查看当前文件夹rm -rf /www/vitepress/*  # 删除/www/vitepress文件夹里所有的内容
cp -rf ./dist/* /www/vitepress/ # 将构建好的文件复制到/www/vitepress文件夹

最后 保存配置,立即构建,然后查看控制台信息即可,GitHub拉代码有时候网络问题~~~

nginx__241">2.2. nginx 安装和配置

nginx_243">2.2.1. 安装 nginx
dnf install nginx

启动nginx

systemctl start nginx # 启动
systemctl status nginx # 查看状态
systemctl enable nginx # 设置开机启动
nginx_257">2.2.2. 配置 nginx

我们这里主要配置 nginx 的用户和默认访问目录:

/etc/nginx/nginx.conf

配置用户:

在这里插入图片描述

nginxconf_269">配置 nginx.conf:

这是我个人项目仅供参考的 nginx 配置,可以参考一下:

# user nobody;
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;# 主域名 zimotop.top 的配置server {listen 80;server_name zimotop.top www.zimotop.top;# 配置主域名的根目录和索引页location / {root /www/vitepress;  # a项目的根目录index index.html;}# 配置错误页面的处理error_page 500 502 503 504 /50x.html;location = /50x.html {root /www/vitepress;}}# 子域名 code.zimotop.top 的配置server {listen 80;server_name code.zimotop.top;# 配置子域名的根目录和索引页location / {root /www/training-vue2;  # b项目的根目录index index.html;}# 配置错误页面的处理error_page 500 502 503 504 /50x.html;location = /50x.html {root /www/training-vue2;}}
}

top;

    # 配置子域名的根目录和索引页location / {root /www/training-vue2;  # b项目的根目录index index.html;}# 配置错误页面的处理error_page 500 502 503 504 /50x.html;location = /50x.html {root /www/training-vue2;}
}

}


http://www.ppmy.cn/news/1554656.html

相关文章

HCIP:VRRP概念及实验

一、VRRP的基本概念 VRRP(虚拟路由冗余协议),VRRP可以将多个路由器组合成一个虚拟路由器组,并对外部网络提供一个虚拟IP地址,将虚拟路由的IP地址作为用户的默认网关来实现与外部网络的通信,当网关设备出现…

C# 探险之旅:第十节 - 循环(for 中的 continue 和 break)

欢迎来到C#探险之旅的第十节!今天我们要探索的是编程世界中的超级英雄——循环!想象一下,你是一名勇敢的探险家,正在寻找传说中的宝藏,而循环就是你的魔法工具,能帮你重复执行某些任务,直到找到…

深入理解代理模式(Proxy):静态代理、动态代理与AOP

目录 1. 代理模式简介2. 静态代理3. 动态代理 3.1 JDK动态代理3.2 CGLIB动态代理 4. 面向切面编程(AOP)5. 实战示例6. 总结与最佳实践 1. 代理模式简介 代理模式是一种结构型设计模式,它允许我们提供一个代理来控制对其他对象的访问。代理模式在不改变原始类代码…

yarn 安装问题

Couldn’t find package “regenerator-runtime” on the “npm” registry. Error: Couldn’t find package “watch-size” on the “npm” regist 标题Error: Couldn’t find package “babel-helper-vue-jsx-merge-props” on the “npm” registry. Error: Couldn’t f…

go语言的成神之路-标准库篇-os标准库

一、权限 在操作系统(OS)中,标准库的权限管理是非常重要的,它确保了不同用户和进程能够安全地访问系统资源。以下是一些常见的权限概念和说明: 1.用户权限 用户ID(UID):每个用户在…

福昕PDF低代码平台

福昕PDF低代码平台简介 福昕PDF 低代码平台是一款创新的工具,旨在简化PDF处理和管理的流程。通过这个平台,用户可以通过简单的拖拽界面上的按钮,轻松完成对Cloud API的调用工作流,而无需编写复杂的代码。这使得即使没有编程经验的…

计算机毕设-基于springboot的高校电动车租赁服务业务系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

webstorm开发uniapp(从安装到项目运行)

1、下载uniapp插件 下载连接:Uniapp Tool - IntelliJ IDEs Plugin | Marketplace (结合自己的webstorm版本下载,不然解析不了) 将下载到的zip文件防在webstorm安装路径下,本文的地址为: 2、安装uniapp插…