-
1. 什么是 CI/CD
-
1.1 CI(Continuous Integration)
-
1.2 CD(Continuous Delivery/Continuous Deployment)
-
-
2. 什么是 Jenkins
-
3. 准备工作
-
3.1 整体规划
-
3.2 准备代码
-
3.3 准备服务器
-
-
4. 搭建 Jenkins
-
5. 安装插件
-
6. 配置 Jenkins
-
6.1 基本的环境配置
-
6.2 JDK
-
6.3 Maven
-
6.4 Git
-
6.5 远程的凭证配置
-
-
7. 开始一个项目的构建
-
8. 自动构建
-
8.1 修改 Jenkins
-
8.2 配置 Webhook
-
-
9. 小结
1. 什么是 CI/CD
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。
CI/CD 的核心概念可以总结为三点:
-
持续集成
-
持续交付
-
持续部署
CI/CD 主要针对在集成新代码时所引发的问题(俗称"集成地狱")。
为什么会有集成地狱这个“雅称”呢?大家想想我们一个项目部署的过程,拉取代码->构建->测试->打包->部署
,如果我们经常需要部署项目,特别是在微服务时代,服务特别多的情况下,不停的测试打包部署,那估计得有个人一整天专门做这事了,而这事又是繁琐的重复无意义的。
具体而言,CI/CD 可让持续自动化和持续监控贯穿于应用的整个生命周期(从集成和测试阶段,到交付和部署),这些关联的事务通常被统称为"CI/CD 管道",由开发和运维团队以敏捷方式协同支持。
1.1 CI(Continuous Integration)
CI/CD 中的"CI"始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到代码仓库中,该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。
1.2 CD(Continuous Delivery/Continuous Deployment)
CI/CD 中的"CD"指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。
持续交付(Continuous Delivery)通常是指开发人员对应用的更改会自动进行错误测试并上传到代码仓库(如 GitHub、GitLab 等),然后由运维团队将其部署到实时生产环境中。这旨在解决开发和运维团队之间可见性及沟通较差的问题。因此,持续交付的目的就是确保尽可能减少部署新代码时所需的工作量。
持续部署(Continuous Deployment)指的是自动将开发人员的更改从代码仓库发布到生产环境,以供客户使用。通过一套全自动化的流程,来解决手动测试、编译、打包等操作。持续部署以持续交付的优势为根基,实现了管道后续阶段的自动化。
2. 什么是 Jenkins
前面说的 CI/CD 算是一种思想,思想要落地,就需要对应的工具。
Jenkins 是一款开源的 CI/CD 软件,可以算是 CI/CD 软件领导者,它提供了超过 1000 个插件来支持构建、部署、自动化,基本上能够满足任何项目的需要。
整体来说,Jenkins 有如下六大特点:
-
持续集成和持续交付
作为一个可扩展的自动化服务器,Jenkins 可以用作简单的 CI 服务器,或者变成任何项目的持续交付中心。
-
简易安装
Jenkins 是一个基于 Java 的独立程序,可以立即运行,包含 Windows、Mac OS X 和其他类 Unix 操作系统。
-
配置简单
Jenkins 可以通过其网页界面轻松设置和配置,其中包括即时错误检查和内置帮助。
-
插件
通过更新中心中的 1000 多个插件,Jenkins 集成了持续集成和持续交付工具链中几乎所有的工具。
-
扩展
Jenkins 可以通过其插件架构进行扩展,从而为 Jenkins 可以做的事提供几乎无限的可能性。
-
分布式
Jenkins 可以轻松地在多台机器上分配工作,帮助更快速地跨多个平台推动构建、测试和部署。
其实 Jenkins 有很多好玩的用法,今天我还是想先通过一个简单的案例,先来和大家捋一捋如何使用 Jenkins 来实现一个 Spring