CD/CI的概念

转自:CI/CD持续集成/持续部署 敏捷开发

     敏捷软件开发(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引发普遍关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协做、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、可以很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程当中人的做用。html

1,CI/CD持续集成/持续部署python

       持续集成(Continuous integration)是一种软件开发实践,即团队开发成员常常集成它们的工做,经过每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。git

       持续部署(continuous deployment)是经过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上表明了一个开发团队工程化的程度,毕竟快速运转的互联网公司人力成本会高于机器,投资机器优化开发流程化相对也提升了人的效率,让 engineering productivity 最大化。程序员

       持续交付(英语:Continuous delivery,缩写为 CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件能够稳定、持续的保持在随时能够释出的情况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式能够减小软件开发的成本与时间,减小风险。github

       与DevOps的关系web

       持续交付与DevOps的含义很类似,因此常常被混淆。可是它们是不一样的两个概念。DevOps的范围更广,它以文化变迁为中心,特别是软件交付过程所涉及的多个团队之间的合做(开发、运维、QA、管理部门等),而且将软件交付的过程自动化。另壹方面,持续交付是壹种自动化交付的手段,关注点在于将不一样的过程集中起来,而且更快、更频繁地执行这些过程。所以,DevOps能够是持续交付的壹个产物,持续交付直接汇入DevOps;编程

       与持续部署的关系服务器

        有时候,持续交付也与持续部署混淆。持续部署意味着全部的变动都会被自动部署到生产环境中。持续交付意味着全部的变动均可以被部署到生产环境中,可是出于业务考虑,能够选择不部署。若是要实施持续部署,必须先实施持续交付。网络

1.一、jenkins是什么?并发

Jenkins是一个可扩展的持续集成引擎。

主要用用途:

持续、自动的构建/测试软件项目。

监控一些定时执行的任务。、

特色:

易于安装,只要把jenkins.war部署到servlet容器

易于配置-全部配置都经过其提供的web界面实现。

集成RSS/E-mail经过RSS发布构建结果或当构件完成是经过e-mail通知。

生成JUnit/TestNG测试报告。

分布式构建支持Jenkins可以让多台计算机一块儿构建/测试。

文件识别:Jenkins可以跟踪那次构建生成哪些jar,那次构建使用哪一个版本的jar

插入支持:支持扩展插件,能够开发适合本身团队的使用的工具。

Jenkins的目标是监控软件的开发流程,快速显示问题。因此能保证开发人员省事又省力提升开发效率。

二、项目版本迭代控制:、

现有的版本控制工具,如 Github、GitLab、SVN、CVS 等主流工具..

构建及测试:经过 Jenkins 实现自动构建和测试,还有商业软件BAMBOO来持续集成。这个收费的。免费就用Jenkins..

交付:以Docker镜像形式进行交付,提交至镜像仓库;

2.1 SVN服务器:

Subversion是一个版本控制系统,相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。

Subversion的版本库能够经过网络访问,从而使用户能够在不一样的电脑上进行操做。从某种程度上来讲,容许用户在各自的空间里修改和管理同一组数据能够促进团队协做。由于修改再也不是单线进行(单线进行也就是必须一个一个进行),开发进度会进展迅速。此外,因为全部的工做都已版本化,也就没必要担忧因为错误的更改而影响软件质量—若是出现不正确的更改,只要撤销那一次更改操做便可。某些版本控制系统自己也是软件配置管理系统(SCM),这种系统通过精巧的设计,专门用来管理源代码树,而且具有许多与软件开发有关的特性——好比对编程语言的支持或者提供程序构建工具。不过Subversion并非这样的系统,它是一个通用系统,能够管理任何类型的文件集。

2.2 CVS服务器:

CVS(Concurrent Versions System)版本控制系统是一种GNU软件包,主要用于在多人开发环境下源码的维护。Concurrent有并发的、协做的、一致的等含义。实际上CVS能够维护任意文档的开发和使用,例如共享文件的编辑修改,而不只仅局限于程序设计。CVS维护的文件类型能够是文本类型也能够是二进制类型。CVS用Copy-Modify-Merge(拷贝、修改、合并)变化表支持对文件的同时访问和修改。它明确地将源文件的存储和用户的工做空间独立开来,并使其并行操做。CVS基于客户端/服务器的行为使其可容纳多个用户。这一特性使得CVS成为位于不一样地点的人同时处理数据文件(特别是程序的源代码)时的首选。

全部重要的免费软件项目都使用CVS做为其程序员之间的中心点,以便可以综合各程序员的改进和更改。这些项目包括GNOME、KDE、THE GIMP和Wine等。

2.3 GIt/github:

    GIT (分布式版本控制系统)

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git的读音为/gɪt/。

Git是一个开源的分布式版本控制系统,能够有效、高速的处理从很小到很是大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Torvalds 开始着手开发 Git 是为了做为一种过渡方案来替代 BitKeeper,后者以前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人以为BitKeeper 的许可证并不适合开放源码社区的工做,所以 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,可是咱们已经发如今不少其余自由软件项目中也使用了 Git。例如 不少 Freedesktop 的项目迁移到了 Git 上。

gitHub是一个面向开源及私有软件项目的托管平台,由于只支持git 做为惟一的版本库格式进行托管,故名gitHub。

gitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的 Web管理界面之外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协做图谱(报表)、代码片断分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是很是之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。

相关文章
相关标签/搜索