通常企业都会将持续集成和持续交付的过程标准化一个单独的生态系统,将涉及的特定工具标准化。
- 与代码库集成后,每当检测到代码库变更,自动触发针对新提交代码集成测试
- 频繁持续地提交会尽早发现隐藏的问题
- 部署服务器将成功的制品部署到应用服务器
Jenkins是用Java编写的开源的构建服务器,用来触发构建的,调用Maven、Gradle等工具,按依赖顺序构建,将构建流程标准化。
主要的编译工具
- 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页面,,便于团队立刻觉察构建状态