Continuous Integration

Start Date: 05/19/2019

Course Type: Common Course

Course Link: https://www.coursera.org/learn/continuous-integration

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

About Course

In today's world, software development is highly complex and often has large teams of developers working on small pieces of a larger software project. This course will go over the basic principles of using a continuous integration system effectively to constantly improve software. We're going to describe the different stations of continuous test, build, integration and deploy processes required for DevOps practices and apply best practices for quality software management, and tooling to accomplish iterative software build & test processes. You will be able to create an automated job for continuous build, test, integrate, and deploy with Travis CI and use branching and project workflows to enhance the quality, speed and feedback loops for your software assets. We'll describe the attributes of Deterministic Builds and how they are applied within the CI pipeline and use the Continuous Integration data and analytics to measure and improve the health of your software assets. Automation at scale is now more achievable for software development teams, as continuous integration makes it possible.

Course Syllabus

Continuous Integration (CI) Tenets and Basic Features
Managing the CI Environment and Performing with Travis CI
Connecting Continuous Integration to GitHub and CI Status for Shipping Changes
Creating a Reliable Continuous Integration System and Log Analytics

Deep Learning Specialization on Coursera

Course Introduction

In today's world, software development is highly complex and often has large teams of developers working on small pieces of a larger software project.

Course Tag

Related Wiki Topic

Article Example
Continuous integration The system should build commits to the current working version to verify that they integrate correctly. A common practice is to use Automated Continuous Integration, although this may be done manually. For many, continuous integration is synonymous with using Automated Continuous Integration where a continuous integration server or daemon monitors the revision control system for changes, then automatically runs the build process.
Continuous integration Some downsides of continuous integration can include:
Multi-stage continuous integration Multi-stage continuous integration is an expansion upon continuous integration, it presumes that you are already following those recommended practices.
Continuous integration Continuous integration is intended to produce benefits such as:
Multi-stage continuous integration Multi-stage continuous integration has many advantages:
Continuous integration Continuous integration involves integrating early and often, so as to avoid the pitfalls of "integration hell". The practice aims to reduce rework and thus reduce cost and time.
Continuous integration To achieve these objectives, continuous integration relies on the following principles.
Multi-stage continuous integration Tools that support multi-stage continuous integration include:
Continuous integration In 1997, Kent Beck and Ron Jeffries invented Extreme Programming (XP) while on the Chrysler Comprehensive Compensation System project, including continuous integration. Beck published about continuous integration in 1998, emphasising the importance of face-to-face communication over technological support. In 1999, Beck elaborated more in his first full book on Extreme Programming. CruiseControl was released in 2001.
Continuous integration In 1994, Grady Booch used the phrase continuous integration in Object-Oriented Analysis and Design with Applications (2nd edition) to explain how, when developing using micro processes, "internal releases represent a sort of continuous integration of the system, and exist to force closure of the micro process."
Comparison of continuous integration software This is a compendium of continuous integration software which support a software engineering practice, continuous integration, in which developer's changes are immediately tested and reported when they are added to the mainline code base. The comparison of various continuous integration tools is done on the basis of platform, license, builders and Integration IDEs.
Continuous integration This section lists best practices suggested by various authors on how to achieve continuous integration, and how to automate this practice. Build automation is a best practice itself.
Multi-stage continuous integration For multi-stage continuous integration, each team must have its own branch.
Continuous integration A single command should have the capability of building the system. Many build tools, such as make, have existed for many years. Other more recent tools are frequently used in continuous integration environments. Automation of the build should include automating the integration, which often includes deployment into a production-like environment. In many cases, the build script not only compiles binaries, but also generates documentation, website pages, statistics and distribution media (such as Debian DEB, Red Hat RPM or Windows MSI files).
Multi-stage continuous integration Multi-stage continuous integration is a software development technique intended to achieve highly integrated parallel development activity while reducing the scope of integration problems.
Continuous integration In addition to automated unit tests, organizations using CI typically use a build server to implement "continuous" processes of applying quality control in general — small pieces of effort, applied frequently. In addition to running the unit and integration tests, such processes run additional static and dynamic tests, measure and profile performance, extract and format documentation from the source code and facilitate manual QA processes. This continuous application of quality control aims to improve the quality of software, and to reduce the time taken to deliver it, by replacing the traditional practice of applying quality control "after" completing all development. This is very similar to the original idea of integrating more frequently to make integration easier, only applied to QA processes.
Continuous integration In software engineering, continuous integration (CI) is the practice of merging all developer working copies to a shared mainline several times a day. Grady Booch first named and proposed CI in his 1991 method, although he did not advocate integrating several times a day. Extreme programming (XP) adopted the concept of CI and did advocate integrating more than once per day - perhaps as many as tens of times per day.
Continuous integration With continuous automated testing benefits can include:
Continuous integration The main aim of CI is to prevent integration problems, referred to as "integration hell" in early descriptions of XP. CI is not universally accepted as an improvement over frequent integration, so it is important to distinguish between the two as there is disagreement about the virtues of each.
Multi-stage continuous integration Changes propagate as rapidly as possible, stopping only when there is a problem. Ideally, changes make it to the main integration area just as frequently as when doing mainline development. The difference is that fewer problems make it all the way to the main integration area. Multi-stage continuous integration allows for a high degree of integration to occur in parallel while vastly reducing the scope of integration problems.