1. 认识Jenkins
1.1 Jenkins是什么?
Jenkins 是一个开源的自动化服务器,主要用于持续集成和持续部署(CI/CD)。 它由Java编写,因此它可以在Windows、Linux和macOS等大多数操作系统上运行。 Jenkins 提供了一个易于使用的web界面,通过插件支持来扩展其功能,使得它可以与各种流行的开发工具和技术无缝集成,比如Git、Maven、Docker等。
主要功能
- 持续集成(CI):Jenkins 可以监控版本控制系统中的变化,并自动进行构建、测试,确保代码的质量和稳定性。这有助于开发团队更快地发现和解决问题。
- 持续部署(CD):当代码通过所有测试后,Jenkins 可以自动部署到一台或多台服务器上,实现从代码提交到产品交付的自动化流程。
- 工作流定制和编排:Jenkins 支持 Pipeline 语法,允许用户定义和实现复杂的构建、测试和部署流程。
- 插件扩展:Jenkins 拥有庞大的插件生态,可以通过安装插件来扩展其功能,满足不同用户的需求。
- Master-Slave架构:Jenkins 支持 Master-Slave 架构,Master 负责调度构建任务,Slave 负责执行这些任务。这种架构允许分布式构建,提高了资源利用率和构建效率。
使用场景
- 自动化测试:自动执行单元测试、集成测试等,快速反馈测试结果。
- 编译和构建:自动化编译和构建过程,保障代码的可构建性和一致性。
- 部署应用:自动将应用部署到开发、测试或生产环境,加快交付速度。
- 环境管理:自动化管理(如创建、销毁)开发和测试环境,提高资源使用效率。
- 任务调度:定时执行特定任务,如数据库备份、清理日志等。
Jenkins 由于其灵活性和广泛的社区支持,成为了开发和运维团队中流行的DevOps工具之一。
1.2 Jenkins特点
- 开源免费:Jenkins是一个开源软件,并且免费提供给用户使用。
- 可扩展性:Jenkins提供了丰富的插件和扩展,可以满足各种不同的需求。
- 易于安装和部署:Jenkins可以在多种操作系统上运行,例如Windows、Linux、MacOS等,安装和部署都非常简单。
- 支持多种版本控制系统:Jenkins支持多种版本控制系统,例如Git、SVN、Mercurial等。
- 支持多种构建工具:Jenkins支持多种构建工具,例如Maven、Gradle、Ant等。
- 可视化界面:Jenkins提供了可视化的界面,用户可以方便地查看和管理各种任务和构建。
- 自动化构建和测试:Jenkins可以自动化构建和测试代码,可以大大提高开发效率和代码质量。
- 支持分布式构建:Jenkins支持分布式构建,可以将任务分配给多个节点进行并行构建,提高构建速度。
- 支持持续集成和持续交付:Jenkins支持持续集成和持续交付,可以将代码快速地交付给用户,提高软件交付速度。
1.3 Jenkins发展
Hudson阶段:
Jenkins最初是从Hudson项目分支出来的。Hudson是一个由Sun公司开发的持续集成工具,Jenkins最初是作为Hudson的一个分支项目开始的。在这个阶段,Jenkins社区的开发者主要是对Hudson进行改进和优化,添加新的功能和修复漏洞,Jenkins逐渐成为了一个独立的项目。
社区化阶段:
随着Jenkins的发展,越来越多的开发者加入到Jenkins社区中,贡献代码、提供支持和分享经验,Jenkins逐渐成为了一个真正的开源项目。在这个阶段,Jenkins社区的开发者开始着重关注用户体验和易用性,提供更加友好的界面和更加易用的功能。
插件化阶段:
Jenkins提供了丰富的插件和扩展,可以满足各种不同的需求,这也是Jenkins最大的优势之一。在这个阶段,Jenkins社区的开发者开始着重关注可扩展性和灵活性,提供更加丰富的插件和扩展,让用户可以根据自己的需求自由地选择和组合插件。
Pipeline阶段:
Jenkins Pipeline是Jenkins 2.0中新增的功能,它提供了一种新的方式来定义持续交付流程,可以更加灵活地构建复杂的持续交付流程。在这个阶段,Jenkins社区的开发者开始着重关注持续交付流程的可视化和自动化,提供更加灵活和可定制的持续交付流程,让用户可以更加轻松地构建和管理复杂的持续交付流程。
Cloud Native阶段:
Jenkins X是Jenkins社区推出的一个新项目,它是一个专门用于云原生应用的持续交付工具,可以帮助开发者快速地构建、测试和部署云原生应用。在这个阶段,Jenkins社区的开发者开始着重关注云原生应用的持续交付,提供更加专业和高效的持续交付解决方案,让用户可以更加轻松地构建和管理云原生应用的交付流程。
2. Jenkins WebUI
2.1 管理页面
版本 Jenkins 2.401.1
系统管理页面包含系统管理、全局安全管理、全局工具配置、节点管理、授权管理、插件管理、系统备份管理、日志监控管理
2.2 项目管理页面
2.3 构建输出页面
3. Jenkins构建
3.1 Jenkins项目类型
支持多种job类型,自由风格,流水线,maven 等等