Jenkins构建GitLab合并请求(Merge Request)

写了两篇这样的文章,我们大概可以总结出Jenkins构建合并请求(Merge Request)的原理:首先,需要在Jenkins上安装一个插件以便提供一个Webhook接口,配置插件连通对应的代码协作平台以便将构建状态写回代码协作平台(并不是所有的插件都提供这个功能);其次,在对应的Git仓库中设置Webhook监听Git事件,比如合并请求(Merge Request)的创建、编辑等。当有监听的事件发生时,Webhook触发Jenkins的Webhook接口,Webhook接口解析请求数据,创建一些有用的环境变量,比如合并请求(Merge Request)ID,合并请求(Merge Request)的原分支和目标分支等,并触发对应的Jenkins pipeline;最后,创建一个Jenkins pipeline(目前主要是Pipeline2.0的Jenkinsfile),设置被触发的条件和如何克隆对应的代码,以及实际的构建逻辑。接前面的系列,本文将继续介绍如何配置Jenkins和GitLab来构建GitLab合并请求(Merge Request)。

阅读更多

Jenkins构建GitHub合并请求(Pull Request)

在我的文章“Git合并请求(pull/merge request)的本质”中已经说明了合并请求(pull/merge request)在代码层面上实际是Git仓库中的一个特殊分支,它指向了私有分支和主分支临时合并后产生的合并提交(merge commit)。如果我们能够在这个合并请求(pull/merge request)被真正合并进主分支之前对它做一次构建,就能尽早发现私有分支上的代码是否有问题,从而将问题拦截在主分支之外,减少主分支上持续交付流水线的失败率。对合并请求(pull/merge request)的构建除了编译代码(必要时可增量编译)和单元测试外,还可以增加更多额外的检查,比如代码的静态扫描。业界把这个放在持续交付流水线之前的检查称为preflight流水线(可参考《Continuous Delivery》这本书第三章67页对preflight构建的详细介绍)。本文将介绍如何配置Jenkins和Github来构建Github合并请求(Pull Request)。

阅读更多

Jenkins Job的并发执行

并发,多线程是程序设计领域老生常谈的问题,唯一的目的就是提高程序的执行效率-充分利用资源更快地处理多个计算请求。在持续集成、交付(CI/CD)领域同样存在着并发执行的需求。本文将主要介绍Jenkins Job的并发执行以及相关问题的探讨。

阅读更多

基于Jenkins Freestyle Job构建CI/CD流水线

可能有人会问:“现在流行的是Jenkins Pipeline 2.0(Jenkinsfile),所有人都在谈论和使用, 为什么还在用Freestyle Job, 是不是太low了!”。的确,Jenkins Pipeline 2.0现在很流行,几乎就等同于Jenkins平台上构建CI/CD流水线的标准,如果你不使用Jenkins Pipeline 2.0,那么就等于不懂CI/CD。我承认Jenkins Pipeline 2.0带来了很多革命性的理念,比如Build As Code, 但是我想说的是Jenkins Pipeline 2.0不等于CI/CD Pipeline,而且它的革命也不是很彻底。不过本文不会过多地去议论方法或工具的好坏,只是在Jenkins上利用一种非Jenkins Pipeline 2.0的方式去构建CI/CD流水线,并说明这种流水线的优缺点,以期能够给读者一次思维上的刷新。

阅读更多