一、环境介绍
随着软件开发需求及复杂度的不断提高,团队开发成员之间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降;持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。所以,当配置完Jenkins持续集成持续交付环境后,就可以把发布的任务交给集成服务器去打理了。使用Maven(Ant)等来实现Java项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。
二、jenkins简介
Jenkins是一个用Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从 Hudson项目独立。
官方网站: https://jenkins.io/ lenkins提供了软件开发的持续集成服务。
它运行在Servlet容器中(例如Apache Tomcat)它支持软件配置管理(SCM)工具(包括AccuRev SCM, CVS, Subversion,Git, Perforce.Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。
Jenkins的主要开发者是川口耕介。Jenkins是在MIT许可证下发布的自由软件。Jenkins能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能用图表的形式,形象地展示项目构建的趋势和稳定性。
三、Jenkins特点
Jenkins包含以下几个特点:
- 易安装:仅仅一个jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,
- 更无需安装数据库;
- 易配置:提供友好的GUI配置界面;
- 变更支持: Jenkins能从代码仓库(SVN /Git)中获取并产生代码更新列表,并输出到编译输出信息中;
- 支持永久链接:用户是通过Web来访问Jenkins的,而这些Web页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;集成E-Mail/RSS/M:
- 当完成一次集成时,可通过这些工具实时收取集成结果(构建次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
- JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
- 支持分布式构建: Jenkins可以把集成构建等工作分发到多台计算机中完成;
- 文件指纹信息: Jenkins会保存构建集成所产生的jars文件、集成构建使用了哪个版;
- 支持第三方插件: Jenkins支持第三方插件,这使得Jenkins功能变得越来越强大。
持续集成:持续集成(英语: Continuous integration,缩写为C1),一种软件工程流程,将所有工程数次到共用主线(mainline)上。持续集成主要是为了解决软件进行系统集成时面临的各项问题,极限编程称这些问题为集成地狱。
持续集成:主要是强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。简单来讲就是:频繁地 (一天多次)将代码集成到主干。
持续集成的效益
- 及早发现集成错误且由于修订的内容较小所以易于追踪,这可以节省项目的时间与成本。
- 避免发布日期的前一分钟发生混乱,当每个人都会尝试为他们所造成的那一点点不兼容的版本做检查。
- 当单元测试失败或发生错误,若开发人员需要在不除错的情况下还原代码库到一个没有问题的状态,只需要放弃一小部分的更改(因为集成的次数频繁)。
- 让"最新"的程序可保持可用的状态供测试、展示或发布用。
- 频繁的提交代码会促使开发人员创建模块化,低复杂性的代码。
- 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
持续集成的作用
- 保证团队开发人员提交代码的质量,减轻了软件发布时的压力
- 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量。
持续集成的特点
- 是一个自动化的、周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
- 需要有专门的集成服务器来执行集成构建;
- 需要有代码托管工具支持;
持续交付
持续交付(英语: Continuous delivery,缩写为CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」 (production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
持续部署
持续部署(英语: Continuous Deployment,缩写为CD),是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。有时候,持续部署也与持续交付混淆。持续部署意味着所有的变更都会被自动部署到生产环境中。持续交付意味着所有的变更都可以被部署到生产环境中,但是出于业务考虑,可以选择不部署。如果要实施持续部署,必须先实施持续交付。
持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。
关键字: C/CD持续集成/持续交付/持续部署
Maven介绍
Maven项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目.
由于Maven的面向项目的方法,许多Apache. Jakarta项目发文时使用Maven,而且公司项目采用 Maven的比例在持续增长。
Maven这个单词来自于意第绪语(犹太语) ,意为知识的积累,最初在 Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自 Ant. build文件) ,仅有细微的差别,而 JAR文件都由 CVs来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享 JARs.