Jenkins核心部署流程

一、Jenkins介绍

1.1 Jenkins是什么

Jenkins 是一个开源的自动化服务器,主要用于持续集成和持续部署(CI/CD)。 它由Java编写,因此它可以在Windows、Linux和macOS等大多数操作系统上运行。 Jenkins 提供了一个易于使用的web界面,通过插件支持来扩展其功能,使得它可以与各种流行的开发工具和技术无缝集成,比如Git、Maven、Docker等。

1.2 Jenkins功能

  • 持续集成(CI):Jenkins 可以监控版本控制系统中的变化,并自动进行构建、测试,确保代码的质量和稳定性。这有助于开发团队更快地发现和解决问题。
  • 持续部署(CD):当代码通过所有测试后,Jenkins 可以自动部署到一台或多台服务器上,实现从代码提交到产品交付的自动化流程。
  • 工作流定制和编排:Jenkins 支持 Pipeline 语法,允许用户定义和实现复杂的构建、测试和部署流程。
  • 插件扩展:Jenkins 拥有庞大的插件生态,可以通过安装插件来扩展其功能,满足不同用户的需求。
  • Master-Slave架构:Jenkins 支持 Master-Slave 架构,Master 负责调度构建任务,Slave 负责执行这些任务。这种架构允许分布式构建,提高了资源利用率和构建效率。

1.3 Jenkins使用场景

  • 自动化测试:自动执行单元测试、集成测试等,快速反馈测试结果。
  • 编译和构建:自动化编译和构建过程,保障代码的可构建性和一致性。
  • 部署应用:自动将应用部署到开发、测试或生产环境,加快交付速度。
  • 环境管理:自动化管理(如创建、销毁)开发和测试环境,提高资源使用效率。
  • 任务调度:定时执行特定任务,如数据库备份、清理日志等。

1.4 Jenkins特点

  • 开源免费:Jenkins是一个开源软件,并且免费提供给用户使用。
  • 可扩展性:Jenkins提供了丰富的插件和扩展,可以满足各种不同的需求。
  • 易于安装和部署:Jenkins可以在多种操作系统上运行,例如Windows、Linux、MacOS等,安装和部署都非常简单。
  • 支持多种版本控制系统:Jenkins支持多种版本控制系统,例如Git、SVN、Mercurial等。
  • 支持多种构建工具:Jenkins支持多种构建工具,例如Maven、Gradle、Ant等。
  • 可视化界面:Jenkins提供了可视化的界面,用户可以方便地查看和管理各种任务和构建。
  • 自动化构建和测试:Jenkins可以自动化构建和测试代码,可以大大提高开发效率和代码质量。
  • 支持分布式构建:Jenkins支持分布式构建,可以将任务分配给多个节点进行并行构建,提高构建速度。
  • 支持持续集成和持续交付:Jenkins支持持续集成和持续交付,可以将代码快速地交付给用户,提高软件交付速度。

二、Jenkins发展

  • Hudson阶段:

TIP

Jenkins最初是从Hudson项目分支出来的。Hudson是一个由Sun公司开发的持续集成工具,Jenkins最初是作为Hudson的一个分支项目开始的。在这个阶段,Jenkins社区的开发者主要是对Hudson进行改进和优化,添加新的功能和修复漏洞,Jenkins逐渐成为了一个独立的项目。

  • 社区化阶段:

TIP

随着Jenkins的发展,越来越多的开发者加入到Jenkins社区中,贡献代码、提供支持和分享经验,Jenkins逐渐成为了一个真正的开源项目。在这个阶段,Jenkins社区的开发者开始着重关注用户体验和易用性,提供更加友好的界面和更加易用的功能。

  • 插件化阶段:

TIP

Jenkins提供了丰富的插件和扩展,可以满足各种不同的需求,这也是Jenkins最大的优势之一。在这个阶段,Jenkins社区的开发者开始着重关注可扩展性和灵活性,提供更加丰富的插件和扩展,让用户可以根据自己的需求自由地选择和组合插件。

  • Pipeline阶段:

TIP

Jenkins Pipeline是Jenkins 2.0中新增的功能,它提供了一种新的方式来定义持续交付流程,可以更加灵活地构建复杂的持续交付流程。在这个阶段,Jenkins社区的开发者开始着重关注持续交付流程的可视化和自动化,提供更加灵活和可定制的持续交付流程,让用户可以更加轻松地构建和管理复杂的持续交付流程。

  • Cloud Native阶段:

TIP

Jenkins Pipeline是Jenkins 2.Jenkins X是Jenkins社区推出的一个新项目,它是一个专门用于云原生应用的持续交付工具,可以帮助开发者快速地构建、测试和部署云原生应用。在这个阶段,Jenkins社区的开发者开始着重关注云原生应用的持续交付,提供更加专业和高效的持续交付解决方案,让用户可以更加轻松地构建和管理云原生应用的交付流程。

三、Jenkins安装

3.1 下载jenkins

Jenkins提供了多种部署方式,用户可以根据自己的需求选择合适的版本:

  • 官方网站下载:访问 Jenkins官网 下载最新版本
  • 版本选择:
    • LTS版本:长期支持版本,稳定性好,建议生产环境使用

    • Weekly版本:每周更新版本,包含最新特性,适合开发测试环境

3.2 Jenkins推荐配置

TIP

运行Jenkins需要选择适当的Java版本

DANGER

  • 数据盘挂载到/home/application 目录下。
  • JENKINS_HOME定义在/home/application/jenkins 目录下 | 默认是在 /root/.jenkins 目录下。

3.3 Jenkins常见几种部署方式

3.3.1 基于Linux系统

这里Linux系统指的是: OpenEuler 22.03 LTS SP4

3.3.2 基于War包部署,jdk方式
3.3.3 基于Docker 容器部署方式
复制代码
# 安装docker【安装过程省略,可参考https://doc.srebro.cn/home/docker/docker-install】

# 创建docker 网络
docker network create jenkins

# 创建jenkins工作目录
mkdir -p /home/application/jenkins

# 运行Jenkins容器
docker run -itd \
--name jenkins \
--restart always \
--privileged  \
--network jenkins \
-u root \
-p 8080:8080 \
-p 50000:50000 \
-e TZ=Asia/Shanghai \
-v /usr/bin/docker:/usr/bin/docker \
-v /usr/bin/docker-compose:/usr/bin/docker-compose \
-v /home/application/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:2.504.2-lts-jdk17

3.4 推荐使用宿主机,War包部署方式

TIP

以下是三种部署方式的对比分析:

部署方式 优点 缺点 适用场景
RPM/DEB包部署 • 系统级安装,便于管理 • 自动处理依赖关系 • 系统服务集成度高 • 版本更新受限于包管理器 • 配置文件分散在系统各处 • 不同Linux发行版需要不同包 标准化的生产环境, 需要系统级集成
Docker容器部署 • 环境隔离性好 • 快速部署和迁移 • 版本管理方便 • 需要维护容器环境 • 存在容器网络开销 • 宿主机资源利用率较低 • 数据持久化问题 开发测试环境, 需要快速部署和清理
War包部署(推荐👍) • 完全可控的JVM环境 • 直接访问系统资源,性能最优 • 配置集中,便于管理 • 最小化依赖,稳定性好 • 升级方便,只需替换war包 • 便于问题排查和性能调优 • 需要手动安装JDK • 初始部署步骤相对较多 生产环境, 对性能和稳定性要求高

3.4.1 为什么宿主机,War包部署?

  1. 性能优势

    • 直接运行在宿主机JVM上,无额外开销
    • 直接使用宿主机资源,无虚拟化开销
    • 避免容器层带来的IO性能损耗
  2. 维护便利

    • 配置文件集中在JENKINS_HOME目录
    • 👍日志直接写入宿主机,便于收集和分析
    • 👍方便登录机器查看构建产物,DEBUG问题
    • 👍升级Jenkins版本时,备份数据,替换旧版本WAR包即可

3.4.2 最佳实践建议

  1. 标准化部署流程

    • 使用systemd管理Jenkins服务,确保开机自启动
    • 统一存储目录规范,建议使用/home/application/jenkins
    • 选择LTS版本的Jenkins War包,保证稳定性
  2. 备份策略

    • 定期备份JENKINS_HOME目录
    • 将备份文件存储在独立存储系统
    • 制定完整的备份恢复预案
  3. 监控方案

    • 配置JMX监控,实时掌握JVM状态
    • 使用Prometheus + Grafana构建监控面板
    • 设置关键指标告警阈值,比如构建耗时、JVM内存使用情况等

TIP

使用War包部署方式不仅简化了Jenkins的运维工作,还为后续的性能优化和问题排查提供了最大的灵活性。特别是在大规模CI

四、配置Jenkins

4.1 登录jenkins平台

  • Jenkins启动之后,可以看到端口监听在 8080,浏览器访问如下:

TIP

查看/home/application/jenkins/secrets/initialAdminPassword文件,获取初始密码,输入密码登录

4.2 安装推荐插件

  • 选择 安装jenkins社区推荐的插件;安装过程可能会有点问题; 如果实在安装不下去,可以跳过,等进入到jenkins 设置代理地址即可

4.3 创建管理员账户并完成初始化设置

五、使用Nginx反向代理访问Jenkins

5.1 安装Nginx

INFO

安装Nginx过程省略,安装详情见:https://doc.srebro.cn/home/openeuler/nginx

5.2 配置Nginx配置文件

复制代码
 server {
        listen       443 ssl;
        server_name  jenkins.srebro.cn;  ##替换成自己的域名
        error_page  404 /404/404.html;
        charset utf-8;
        ssl_certificate /home/application/nginx/cert/srebro.cn.pem; 
        ssl_certificate_key /home/application/nginx/cert/srebro.cn.key;
        ssl_session_cache    shared:SSL:1m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
        proxy_pass http://172.22.33.201:8080;
        client_max_body_size 200m;
        proxy_set_header            Host $host;
        proxy_set_header            X-real-ip $remote_addr;
        proxy_set_header            X-Forwarded-For $remote_addr;
        }
}

5.3 配置Jenkins URL

TIP

"指定安装Jenkins的HTTP地址,这个值用来在邮件中生产Jenkins链接.

  • 配置路径为------>ManageJenkins------>System------>Jenkins URL

相关推荐
荣--2 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森2 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜2 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB3 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode5 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220705 天前
如何搭建本地yum源(上)
运维
大树888 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠8 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质8 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工8 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信