Jenkins - 初识
通常企业都会将持续集成和持续交付的过程标准化一个单独的生态系统,将涉及的特定工具标准化。
- 与代码库集成后,每当检测到代码库变更,自动触发针对新提交代码集成测试
- 频繁持续地提交会尽早发现隐藏的问题
- 部署服务器将成功的制品部署到应用服务器
Jenkins是用Java编写的开源的构建服务器,用来触发构建的,调用Maven、Gradle等工具,按依赖顺序构建,将构建流程标准化。
常用应用场景
- 创建一个项目, 手动可以构建, 完成一些简单任务, 比如下载代码后进行编译
- 编译失败邮件通知客户
- 用户可以选择不同参数进行构建
- 代码改动后自动触发某个构建,或者定时触发某个项目构建
- 一个项目构建完成后可以自动调用另一个项目的构建,完成一连串的任务
- 并发构建
主要Job类型
- Freestyle project 自由风格项目,Jenkins最主要的项目类型
- Maven Project Maven项目专用,类似Freestyle,更简单
- Multi-configuration project 多配置项目,适合需要大量不同配置(环境,平台等)构建
- Pipeline 流水线项目,适合使用pipeline(workflow)插件功能构建流水线任务,或者使用Freestyle project 不容易实现的复杂任务
- Multibranch Pipeline 多分支流水线项目,根据SCM仓库中的分支创建多个Pipeline项目
架构图
Jenkins 系统架构图
Jenkins 分布式架构图
主要的编译工具
- Maven:pom文件描述所需的构建依赖
- Gradle
- NPM、NG
- FPM:直接从命令行生成适合构建的源代码RPM包
- 。。。。。。
构建从机
构建本身应该尽可能健壮,并且可以在任何构建主机上重复执行。
- 可以通过增加构建从机,来减少构建队列,提高并行构建效率
- 增加构建从机的方式:SSH和Java JNLP方式
- 基于Linux操作系统的主机最为合适,因为大多数构建工具可安装
触发器
除了通过hook方式与代码库关联外,Jenkins本身也提供了触发机制
- 轮询构建
- 夜间定时构建
- 上游任务触发
pipeline
- 可以通过配置文件来配置
- 使用Groovy DSL来描述任务,相比在web页面设置,易于管理
- 支持在web页面可视化构建顺序
Jenkins文件系统
了解构建如何最终反映到文件系统中有利于更好地使用。
- 每一个任务都有自己的目录,包含任务描述XML文件和工作区(worksapce)目录
- 任务XML文件可以备份到另一台服务器上,便于发生灾难性故障后重建Jenkins服务器,或者只用专用的备份插件。
- 运行构建任务会消耗大量的存储空间,可以通过配置管理工具在必要时清理,或者配置保留一定构建数量的空间。
质量标准
- Jenkins可以用来校检软件质量指标,例如在任务中执行并可视化Java的单元测试。
- 更常见的方案是使用Sonar,在构建阶段运行并传送到Sonar服务器上,存储结果并可视化。
- 适当设置代码质量指标,产品问题优先。
- 现有产品问题被完全解决之前,不要在损坏的代码上提交新代码。
构建状态可视化
让每个人都能查看到自身参与的流程与结果,是达成共识的最简方法。
- 利用插件生成简化的任务状态概览,可以在web页面显示
- 在显著位置的公共显示器radar上显示这个web页面,,便于团队立刻觉察构建状态
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。