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

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

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

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

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

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

  与DevOps的关系

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

  与持续部署的关系

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

1.1、Jenkins是什么?

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

主要用用途:

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

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

特点:

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

易于配置-所有配置都通过其提供的web界面实现。

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

生成JUnit/TestNG测试报告。

分布式构建支持Jenkins能够让多台计算机一起构建/测试。

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

插入支持:支持扩展插件,可以开发适合自己团队的使用的工具。

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

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

现有的版本控制工具,如 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 等。

From:https://blog.csdn.net/qq_32261399/article/details/76651376

Scrum Vs Agile Vs CMMI Methodologies Differences

Agile is a methodology implemented in software industries for its development. In this method, team development is attained by sprints, iterations. Thus, process incremental is achieved by performing sprints. This helps the organization to deliver a quality product to the customer.

A scrum is a form of Agile methodology. It is framed for software development, managed by themselves. As it is an agile form, sprints are performed, conduct meeting and discuss the sprints with product owners and masters. In this article, we discussed the Scrum Vs Agile Vs CMMI methodologies differences.

The full form of CMMI is Capability Maturity Model Integration, this method is utilized for organizational improvement. CMMI comprises of maturity level that helps in the development of the organization.

What is CMMI?

CMMI process creates awareness in the team about their existing place in terms of performance, helps to identify their strengths, what methods utilized for current development, how are the products performing in the market and how it needs to be done.

Through this CMMI model, they identify the business targets and achieve the numbers. Deliver the best products to customers and satisfy them and increase the organization results. CMMI works on observation of behavior and also a process.

CMMI used in products and service development, Service establishment and management, Product and service acquisition.

More about CMMI:

CMMI has Process areas. It will acquire the organization behaviors and principles. It is all about questioning how and observe the behavior, not meant to say how the organization should behave. It will help the existing behaviors and culture that needs to be elaborated.

As said earlier CMMI comprises of maturity level at which the organization is rated. Intended to be broadly interpreted, so success at this level does not provide any certification but gives a rating. It also provides training for the improvement of process and appraisal program. It acts as a guide for the organization or for a project.

Maturity level:

Maturing level has certain stages in which each level has to improve step by step. It consists of process areas, against each process the achievement of the project is measured. It has five levels they are initial, managed, Defined, Quantitatively Managed, Optimizing.

First level- Initial:

At times the organization had to handle bad condition. The achievement in this type of organization purely depends on the team, not because of the prior successful process. It tends to spend more than the budget estimated for even to produce successful products which worked earlier, few organizations accept more work, crisis situation arises, and not able to maintain the track record of their success. All these reflect a maturity level-1 or CMMI level 1.

Second level- Managed:

The organization which proved and achieved all the objectives and met all the business targets. To say, particularly the organization which is successful at defining, planning, deliver the products as per the requirements, and also passed the quality testing. This states that it attained the maturity level-2 or CMMI level 2. Under any condition the organization which achieved all the objectives and able to manage the process in well manner.

The management can identify success at any particular point and able to manage all the customer requirements, work process, deliverables and the product services. They discuss about the commitments with other partners and same can be repeated.

Third level- Defined:

An organization which defines the process clearly and inculcates in standards, methods or tool used for the process, then the steps are involved in the process. To attain maturity level 3, organizations along with successful process should have predefined standards, procedures, process description.

At cmmi level 2 the standard, procedures and description may vary with a project to project, where as in this level the standard, procedures and descriptions are consistent, irrespective of projects same standards can be implemented. Processes are well defined and described more elaborately. At this level, processes are managed more effectively.

Fourth level- Quantitatively managed:

At this level, organization must be able to review and inhabit process with minimal wastage or without deviating from the standards. Also, the sub processes are identified which contribute most for the success of the project. These sub processes can be monitored using techniques that measure against the statics and quantitative techniques. For better quality and improved performance, quantitative techniques are implemented. In case of deviation, the reasons are identified and corrected accordingly

Fifth level-Optimizing:

At this level, the process is updated and changes are incremental and also new techniques are implemented. These techniques are accounted. The innovative methods are developed through the team environment and principles of the organization.

Everyone contributes to the frequent changes and incremental performance, and how effective it can respond to changes. The main part of this level identifies the reason behind the cause of process deviation and shuffling for the process to deliver best results.

CMMI and Agile Mapping:

Now we will look into how CMMI methodology and Scrum process works. First step is requirement management in which one can identify the constraints between customers and user requirements against the product and project layout

Requirement management of CMMI and agile:

  1. Identify the requirements from customers in CMMI
  2. In Agile while performing sprint a product backlog is developed and it’s been reviewed

  3. Acquire the commitment from the project team
  4. Planning meeting conducted from which team sprint plan and product process plan is obtained
  5. Responding to the changes that arise in the middle of the process
  6. As the change required, the user will add to product backlog and perform in the next sprint
  7. Now the difference is identified between plan Vs products Vs and the requirements
  8. After planning meetings, they develop a sprint burnt down chart which states the work remaining and the percentage of work yet to finish

CMMI Vs Scrum Difference:

CMMI is for large engineering projects, also for the complicated projects. It also helps to improve Agile methods implemented in the organization. Scrum is part of Agile. CMMI is being just for the improvement of the current process to attain certain levels, but Scrum has no limits for the improvement.

Scrum deals with new process, CMMI is for the existing. If the result is unsuccessful in Scrum, they will close the process and start where as in CMMI, it is entirely different, they identify the mistake, and review it and make necessary changes and implement it with revised.

CMMI Vs Agile Difference:

In Agile, work is divided into small parts with cross functional teams assigned. CMMI provides learning, and repeat the same existing work process. The CMMI question the how in the process.

Agile is a method, CMMI is agile and tool. Sprints and iterations are not involved in this process. CMMI is implementing sound systems engineering and software engineering principles, projects which cannot be handled by Agile.

CMMI provides training and process improvement. Agile does not drain on development by repeating the process of development with changes in every sprint. Agile adds the new changes in CMMI, the existing is developed. In agile, there is a detailed planning where as in CMMI, it is quite less.

In both Agile and Scrum, the team works on a new process where in CMMI, it works the already worked out process. In scrum and Agile they start implementing the process, in CMMI, they can accept the process that exists already. Once the process is done in form of sprints, Scrum release products.

In Agile, once all the requirements met, they move for testing, if it is failing the loop starts again, it will be removed from the product backlog. In CMMI, once the product is done, testing will be done, if it fails they try to rectify and revise it.

From:https://content.wisestep.com/scrum-vs-agile-vs-cmmi-methodologies-differences/