传统开发流程的问题
让我们设想这样一个场景:开发人员一直写代码,写代码过程中不进行构建,直到全部完成代码再进行构建,然后将其部署到测试服务器上测试。
这个过程看起来没什么问题,但实际上有很多问题:
- 开发人员必须等到软件开发工作全部完成,才能得到测试结果。
- 测试结果很可能会显示多个bug。开发人员很难找到这些bug,因为他们必须检查应用程序的整个源代码。
- 减慢了软件交付过程。
- 与编码或架构问题、构建失败、测试状态和文件上传等相关的连续反馈缺失,导致软件质量下降。
- 整个过程都是手工操作,增加了故障风险。
从上面的问题可以明显看出,不仅软件交付过程变慢了,软件的质量也下降了。这导致了客户的不满。
Jenkins持续集成流程
因此,为了克服这种混乱,迫切需要一个系统,在这个系统中,开发人员可以不断地触发构建,并对源代码中所做的每个更改进行测试。
这就是持续集成的意义所在。Jenkins是最成熟的持续集成(CI)工具,因此让我们看看如何通过Jenkins持续集成来克服上述缺点。
Jenkins持续集成的通用流程图:
上图描述了以下功能:
- 首先,开发人员将代码提交到代码库。同时,Jenkins服务器定期检查代码库中的更改。
- 提交发生后不久,Jenkins服务器将检测代码库中有更新。Jenkins将拉取这些更新,并开始新的构建。
- 如果构建失败,那么将通知相关团队。
- 如果构建成功,那么Jenkins将在测试服务器中部署构建。
- 自动化测试之后,Jenkins生成一个反馈,然后通知开发人员构建和测试结果。
- Jenkins将继续监测代码库中的更新,如果有更新将触发一次新的构建,整个过程将不断重复。
传统流程与持续集成的比较
现在你已经了解了Jenkins如何克服传统软件开发生命周期的缺点。下表显示了“Jenkins出现之前和之后”的对比。
使用 Jenkins 之前 | 使用 Jenkins 之后 |
---|---|
全部代码完成后,构建并测试整个源代码。在构建和测试失败的情况下定位和修复bug是困难和耗时的,这反过来又会减慢软件交付过程。 | 源代码中的每一次提交都会触发构建和测试。因此,开发人员只需关注特定的提交即可。这将加快软件新版发布。 |
开发人员必须等待测试结果 | 开发人员可以及时每次提交的更改测试结果。 |
整个过程都是手动的 | 你只需要提交对源代码的更改,Jenkins将自动完成其余的流程。 |