持续交付36讲
王潇俊
携程系统研发部总监
立即订阅
7125 人已学习
课程目录
已完结 41 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 量身定制你的持续交付体系
免费
基本概念 (3讲)
01 | 持续交付到底有什么价值?
02 | 影响持续交付的因素有哪些?
03 | 持续交付和DevOps是一对好基友
配置管理 (4讲)
04 | 一切的源头,代码分支策略的选择
05 | 手把手教你依赖管理
06 | 代码回滚,你真的理解吗?
07 |  “两个披萨”团队的代码管理实际案例
环境管理 (6讲)
08 | 测试环境要多少?从现实需求说起
09 | 测试环境要多少?从成本与效率说起
10 | 让环境自己说话,论环境自描述的重要性
11 | “配置”是把双刃剑,带你了解各种配置方法
12 | 极限挑战,如何做到分钟级搭建环境?
13 | 容器技术真的是环境管理的救星吗?
构建集成 (5讲)
14 | 如何做到构建的提速,再提速!
15 | 构建检测,无规矩不成方圆
16 | 构建资源的弹性伸缩
17 | 容器镜像构建的那些事儿
18 | 如何做好容器镜像的个性化及合规检查?
发布及监控 (6讲)
19 | 发布是持续交付的最后一公里
20 | Immutable!任何变更都需要发布
21 | 发布系统一定要注意用户体验
22 | 发布系统的核心架构和功能设计
23 | 业务及系统架构对发布的影响
24 | 如何利用监控保障发布质量?
测试管理 (3讲)
25 | 代码静态检查实践
26 | 越来越重要的破坏性测试
27 | 利用Mock与回放技术助力自动化回归
持续交付平台化 (3讲)
28 | 持续交付为什么要平台化设计?
29 | 计算资源也是交付的内容
30 | 持续交付中有哪些宝贵数据?
持续交付移动App (3讲)
31 | 了解移动App的持续交付生命周期
32 | 细谈移动APP的交付流水线(pipeline)
33 | 进阶,如何进一步提升移动APP的交付效率?
实践案例 (4讲)
34 | 快速构建持续交付系统(一):需求分析
35 | 快速构建持续交付系统(二):GitLab 解决代码管理问题
36 | 快速构建持续交付系统(三):Jenkins 解决集成打包问题
37 | 快速构建持续交付系统(四):Ansible 解决自动部署问题
特别放送 (2讲)
持续交付专栏特别放送 | 答疑解惑
持续交付专栏特别放送 | 高效学习指南
结束语 (1讲)
结束语 | 越痛苦的事,越要经常做
持续交付36讲
登录|注册

15 | 构建检测,无规矩不成方圆

王潇俊 2018-08-07
在这个专栏的第 5 篇文章《手把手教你依赖管理》中,我介绍了构建 Java 项目的一些最佳实践,同时也给你抛出了一个问题:如果用户偷懒不遵循这些规范该怎么办?
所谓没有规矩不成方圆,构建是持续交付过程中非常重要的一步,而好的构建检测则可以直接提升交付产物的质量,使持续交付的流水线又快又稳。所以,也就有了 Maven 构建中的大杀器:Maven Enforcer 插件。

什么是 Maven Enforcer 插件?

Maven Enforcer 插件提供了非常多的通用检查规则,比如检查 JDK 版本、检查 Maven 版本、检查依赖版本,等等。下图所示就是一个简单的使用示例。
上述的配置会在构建时(准确的说是在 validate 时)完成三项检查:
requireMavenVersion 检查 Maven 版本必须大于 3.3.9;
requireJavaVersion 检查 JDK 版本必须大于等于 1.9;
requireOS 检查 OS 必须是 Windows 系统。
如果你使用 Java 1.8, Maven 3.3.3, 在 Linux 上构建, 便会出现如下的错误:
Rule 0: org.apache.maven.plugins.enforcer.RequireMavenVersion failed with message: Detected Maven Version: 3.3.3 is not in the allowed range 3.3.9.
Rule 1: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message: Detected JDK Version: 1.8.0-77 is not in the allowed range 1.9.
Rule 2: org.apache.maven.plugins.enforcer.RequireOS failed with message: OS Arch: amd64 Family: unix Name: linux Version: 3.16.0-43-generic is not allowed by Family=windows
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《持续交付36讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

  • Triton
    感谢分享,由于本身没有太多持续集成的经验,听上去比较抽象如果是创业公司应该做到那些?

    作者回复: 一些基本的默认规则就可以了,很多检查是为了预防集成错误的,在多团队,细分工下意义很大

    2018-08-07
    1
  • Mingyan
    都是java的 有php的如何做持续集成吗?
    2019-08-19
  • Robert小七
    这个插件可以在maven的配置文件中配置后,其他任何应用构建时进行检查吗?
    2019-07-03
  • YoungerChina
    更像依赖版本管理检测
    2019-02-12
  • 玉军
    这种构建检查大部分都是环境的检查?有没有更深层次的检查?比如构建检查提高每日构建的成功率?同时ant有没有这方面的插件?

    作者回复: 不仅仅是环境的检查,也可以检查依赖,配置管理等任何自定义的内容;已经持续构建的情况下,就不再关注每日构建了;ant比较难做,ant的机制与目前大多数包管理的方式不太一样,更多是文件及目录的引用

    2018-12-22
  • 吃饱了晒太阳
    遇到个问题想请教下,在服务器上搭建了一个ubuntu docker镜像,里面软件测试都已装好,CI触发脚本测试时候,一直提示redis拒绝连接,调用的脚本也是在容器里的,在容器里执行就可以,但是每次提交触发测试就会提示拒绝连接,是因为什么呢,redis也允许外部连接,是docker网络问题?还请指点

    作者回复: 如果远程调用报错的话,可以看下docker的网络配置

    2018-08-08
收起评论
6
返回
顶部