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

相关推荐
gaize12132 小时前
服务器异常如何解决
运维·服务器
dragoooon343 小时前
仿muduo库实现高并发服务器-面试常见问题
运维·服务器·面试
开***能4 小时前
ASI转Profinet网关助力包装全产业自动化
运维·自动化
北京盛世宏博4 小时前
边缘计算赋能!机房机柜微环境温湿度快速响应控制方案
运维·服务器·网络
3DVisionary5 小时前
高精度三维扫描+自动化,新拓三维打造中小型工业零部件数字化检测新方案
运维·自动化·蓝光三维扫描·dic技术·复杂零部件的批量检测·模型试验·自动化和数字化测量
AI云原生5 小时前
在 openEuler 上使用 x86_64 环境编译 ARM64 应用的完整实践
java·运维·开发语言·jvm·开源·开源软件·开源协议
张人大 Renda Zhang5 小时前
2025 年版笔记:Java 开发如何用 AI 升级 CI/CD 和运维?
java·运维·ci/cd·ai·云原生·架构·自动化
NewBee_Lxx6 小时前
docker nginx
运维·docker·容器