staging and production environments. Although usually
used together, continuous integration and continuous
delivery are two separate concepts that can be addressed
separately.
Continuous integration is a software development
practice in which developers commit their code to a
central repository that is part of a version control system
on an hourly, daily, or weekly basis or at some other
frequency that is agreed upon within the team. As
developers commit their code to the central repository, it
is important to verify that the code integrates well with
the full code base.
As new code is written, it is critically important to run
code base tests against the new changes in the code base
in a fast, automated fashion. Continuous integration
tools accomplish exactly this task. As the code gets
committed to a central repository—in most cases, to a
Git-style version control system—a webhook gets
triggered that starts the whole automated testing phase
of the pipeline. Common triggers at this stage include
automatic integrations with tools such as Cisco Webex
Teams for immediate notifications on the status of the
tests. In the event that a test fails, the developer is
notified and can correct the issues that caused the test to
fail very early in the development process. If all the tests
pass, the code moves on to the next stage of the pipeline.
A key component of any CI pipeline is the build server.
The role of the build server is to react to developers
committing their code to the central repository and to
start the initial tests on the new code features. Most
version control systems support webhook mechanisms to
automatically notify the build server when pull requests
are opened and code is committed. Popular build servers