持续集成、持续交付、持续部署

1. 持续集成(CI)
持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。
好处:

  • 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。
  • 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

如何选择CI工具:
整体而言,Jenkins过去一直是大部分公司的选择,但这个现象正在发生改变,随着公有云服务、Docker,SaaS 的普及,越来越多的企业开始选择 Hosted CI,也就是托管型持续集成系统。
另外,在选择合适的持续集成服务时,还需要考量系统的灵活度以适应公司不同阶段的开发测试需求。
选择持续集成系统只是持续集成应用的其中一步,还需要建立合适的持续集成文化比如代码质量管控、测试文化等。做好持续集成,可为持续交付与持续部署打好坚实基础。

2. 持续交付(CD)
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」中。给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。
持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。
当然,持续交付并不是指软件每一个改动都要尽快部署到产品环境中,它指的是任何的代码修改都可以在任何时候实施部署。

3. 持续部署
持续部署(continuous deployment)是持续交付的下一步或者说更高阶段,指的是代码通过评审以后(或者是通过自动化测试以后),自动部署到生产环境。持续部署是持续交付的最高阶段。这意味着,所有通过了一系列的自动化测试的改动都将自动部署到生产环境。它也可以被称为“Continuous Release”。 大多数的公司如果没有制度的约束或其它条件的影响,都应该以持续部署为目标。
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

「持续集成(ContinuousIntegration)」「持续交付(Continuous Delivery)」「持续部署(Continuous Deployment)」提供了一个优秀的 DevOps 环境,对于整个团队来说,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分。

主流网站部署流程

目前主流网站部署方法,通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置。
1)开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可。
2)运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份和更新。
3)测试人员:可以通过jenkins进行简单的代码及网站测试。

Jenkins

原文地址:实战笔记:Jenkins打造强大的前端自动化工作流

其他优秀教程如下:
Jenkins +nginx 搭建前端构建环境
jenkins使用

是什么

Jenkins 是一款业界流行的开源持续集成工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。

持续集成组件

  1. 一个自动构建过程,包括自动编译、分发、部署和测试
  2. 一个代码存储库,需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,例如SVN、GIT代码库
  3. 一个jenkins持续集成服务器

安装

linux下:ubuntu 14.04中安装Jenkins
windows下:1)从Jenkins官网下载最新war文件。2)运行java -jar jenkins.war即可。

初始化

  1. jenkins的默认端口是8080,启动成功后在浏览器打开。
  2. 进入后会让我们输管理员密码,打开网页上提示路径下的文件,复制密码粘贴输入即可。
  3. 然后会让安装需要的插件,此处选默认即可,等待安装完成。
  4. 创建一个管理员账户。
  5. 上面都完成后会看到就绪界面。

创建任务

  1. 点击创建一个新任务
  2. 选择自由风格的软件项目,并起一个名字

至此,基础准备工作已经完成,我们在服务器上安装了Jenkins并启动,然后进行了初始化配置,建立了一个新任务。