1 - Jenkins简介
Jenkins是一个开源项目,其前身为Hudson,旨在提供一个开放易用的持续集成工具,用于监控持续重复的工作。
主要用于自动而持续地构建/测试软件项目;监控外部调用执行的工作。
Jenkins是驱动整个持续交付和DevOps的核心组件,能够实现项目的自动构建、打包、测试、发布等。
- 易于安装、易于配置、插件众多、具有分布式主从结构
- 提供了不同类型、不同规模的项目的CI/CD解决方案
- 版本迭代和维护速度快
- 作为易用的CI系统,有助于开发者从繁杂的集成中解脱出来,专注更为重要的业务逻辑实现
- 监控集成中存在的错误,提供详细的日志文件和提醒功能
- 以图表的形式形象地展示项目构建的趋势和稳定性
1.1 Jenkins的用途
总的说来,使用Jenkins的流水线处理可以定义各种各样的操作(比如构建、测试等),并将这些操作像管道(pipe)一样自由地组合,从而自动、流畅地执行一系列处理。
不仅可以轻松地管理或执行构建、测试等单个工作,还能将这些工作连接起来批量执行,确保操作的安全性和准确性,减少操作负担,提高操作效率。
- 可以将操作以项目(project)为单位整合到一起运行,更加简单地进行命令操作。
- 消除了手工操作,是操作变得更加安全、可靠。
- 可以将项目的运行记录和结果保存下来,以供整个团队查看。
具体说来,就是完成了如下操作:
- 流水线列表 :显示每个流水线的总体状态
- 构建项目:自动化打包,避免本地配置出错而导致打包失败等异常情况
- 跑测试用例检测bug:自动化测试,例如:只要代码发生改动,就运行回归测试的所有用例
- 静态代码检测:检测基本的代码问题,比如潜在的内存泄露等
- 部署:随时部署,可以设定在打包完成之后的操作
- GUI:支持在GUI上对命令的参数进行修改,并在改写后运行
1.2 Jenkins的部署
单节点(Master)部署
这种部署适用于大多数项目,其构建任务较轻,数量较少,单个节点就足以满足日常开发所需。
多节点(Master-Slave)部署
通常规模较大,代码提交频繁(意味着构建频繁),自动化测试压力较大的项目都会采取这种部署结构。
在这种部署结构下,Master通常只充当管理者的角色,负责任务的调度,slave节点的管理,任务状态的收集等工作,而具体的构建任务则会分配给slave节点。
一个Master节点理论上可以管理的slave节点数是没有上限的,但通常随着数量的增加,其性能以及稳定性就会有不同程度的下降,具体的影响则因Master硬件性能的高低而不同。
多节点(Master-Slave)部署通常以“Jenkins + Docker”的方式来部署,可以避免当测试用例变得海量以后可能会造成的一些问题。
1.3 Jenkins的插件
Jenkins通过插件来增强功能,可以集成不同的构建工具、云平台、分析和发布工具等,从而满足不同组织或用户的需求。
Jenkins 提供了不同的的方法来安装插件(需要不同级别的权限)
- 在web UI使用 "插件管理器":Manage Jenkins --》 Manage Plugins (系统管理--》管理插件),选中相应插件,根据提示安装即可。
- 使用Jenkins CLI install-plugin 命令。
- 手工安装.hpi 文件(插件被打包成独立的 .hpi 文件, 包含有所有必需的代码, 图像和成功运行所需要的资源)
注意:前两种方法要求 Jenkins 主机能够从插件管理中心(https://plugins.jenkins.io/)下载元数据,否则只能通过手工安装.hpi 文件来完成。
2 - 官网信息
2.1 英文官网
- HomePage:https://jenkins.io/
- Documentation:https://jenkins.io/doc/
- Tutorials:https://jenkins.io/doc/tutorials/
- getting-started:https://jenkins.io/doc/pipeline/tour/getting-started/
- Wiki:https://wiki.jenkins.io/
2.2 中文官网
- 中文主页:https://jenkins.io/zh/
- 用户文档:https://jenkins.io/zh/doc/
- 入门指南:https://jenkins.io/zh/doc/pipeline/tour/getting-started/
- 教程:https://jenkins.io/zh/doc/tutorials/
- 用户手册:https://jenkins.io/zh/doc/book/
2.3 下载、镜像与包
- Download:https://jenkins.io/download/
- Mirrors:http://mirrors.jenkins.io/
- Package:https://pkg.jenkins.io/
- Plugins:https://plugins.jenkins.io/
Jenkins下载包的发布版本
- Weekly:每周发布,包含最新问题的修正和最新功能
- Long-term Support(LTS):从最近12周的发布版中选出的比较稳定的版本,适合保守的客户,提供更加稳定的功能