CI/CD Continuous Integration/Continuous Deployment Agile Development

Agile software development (English: Agile software development), also known as agile development, is a new software development method that has gradually attracted widespread attention since the 1990s, and is a software development capability that responds to rapidly changing needs. Their specific names, concepts, processes, and terminology are all different. Compared with "non-agile", they emphasize close collaboration between programmer teams and business experts, face-to-face communication (thought to be more effective than written documents), frequent Delivering new software releases, compact and self-organizing teams, coding and team organization methods that adapt well to changing requirements, and a greater focus on the role of people in software development.

1. CI/CD continuous integration/continuous deployment

      Continuous integration is a software development practice in which team development members integrate their work frequently, with each member integrating at least once a day, which means that multiple integrations may occur each day. Each integration is verified through automated builds (including compilation, release, and automated testing) to catch integration errors early.

       Continuous deployment is the rapid delivery of high-quality products through automated build, test, and deploy cycles. To some extent, it represents the degree of engineering of a development team. After all, the labor cost of fast-running Internet companies will be higher than that of machines. Investing in machines to optimize development processes also improves human efficiency and maximizes engineering productivity.

   Continuous delivery (English: Continuous delivery , abbreviated as CD) is a software engineering method that allows the production process of software products to be completed in a short cycle to ensure that the software can be stably and continuously maintained in a state that can be released at any time . Its goal is to make software build, test, and release faster and more frequently. This approach can reduce the cost and time of software development and reduce risks.

  Relationship with DevOps

Continuous delivery has a similar meaning to DevOps and is often confused. But they are two different concepts. DevOps is broader in scope, centered on cultural change, especially the collaboration between the multiple teams involved in the software delivery process (development, operations, QA, management, etc.), and automating the process of software delivery. Continuous delivery, on the other hand, is a means of automating delivery that focuses on bringing together different processes and executing them faster and more frequently. Therefore, DevOps can be a product of continuous delivery, and continuous delivery is directly imported into DevOps;

  Relationship to Continuous Deployment

Sometimes continuous delivery is also confused with continuous deployment. Continuous deployment means that all changes are automatically deployed to the production environment. Continuous delivery means that all changes can be deployed to the production environment, but may choose not to be deployed for business reasons. If you want to implement continuous deployment, you must implement continuous delivery first.

1.1. What is enkins?

Jenkins is an extensible continuous integration engine.

Main use:

Continuous, automated build /test of software projects.

Monitor some scheduled tasks. ,

Features:

Easy to install, just deploy jenkins.war to servlet container

Easy to configure - all configuration is achieved through its provided web interface.

Integrated RSS/E-mail to publish build results via RSS or to notify via e-mail when the build is complete.

Generate JUnit/TestNG test reports.

Distributed build support Jenkins enables multiple computers to build/test together.

File identification: Jenkins is able to track which jars were produced by that build, and which version of the jars were used by that build

Plug-in support: Support for extension plug-ins, you can develop tools suitable for your own team's use.

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 is a hosting platform for open source and private software projects, because it only supports git as the only repository format for hosting, hence the name gitHub.

gitHub was officially launched on April 10, 2008. In addition to git code repository hosting and basic web management interface, it also provides subscriptions, discussion groups, text rendering, online file editors, collaboration graphs (reports), and code snippet sharing ( Gist) and other functions. At present, its registered users have exceeded 3.5 million, and the number of hosted versions is also very large, including many well-known open source projects such as Ruby on Rails, jQuery, and python.

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324962119&siteId=291194637