◉ Continuous Integration → Continuous Delivery → Continuous Deployment
The CI/CD pipeline is one of the best practices for devops teams to implement, for delivering code changes more frequently and reliably.
It is also an agile methodology best practice, as it enables software development teams to focus on meeting business requirements, code quality, and security because deployment steps are automated.
The technical goal of Continuous Integration is to establish a consistent and automated way to build, package, and test applications. With consistency in the integration process in place, teams are more likely to commit code changes more frequently, which leads to better collaboration and software quality.
Continuous delivery picks up where continuous integration ends.
CD automates the delivery of applications to selected infrastructure environments. Most teams work with multiple environments other than the production, such as development and testing environments, and CD ensures there is an automated way to push code changes to them.
A CI/CD tool such as Jenkins (mostly used and market leader), CircleCI, AWS CodeBuild, Azure DevOps, Atlassian Bamboo, or Travis CI is used to automate the steps and provide reporting.
A typical CD pipeline has build, test, and deploy stages. More sophisticated pipelines include many of these steps:
- Pulling code from version control and executing a build.
- Executing any required infrastructure steps that are automated as code to stand up or tear down cloud infrastructure.
- Moving code to the target computing environment.
- Managing the environment variables and configuring them for the target environment.
- Pushing application components to their appropriate services, such as web servers, API services, and database services.
- Executing any steps required to restarts services or call service endpoints that are needed for new code pushes.
- Executing continuous tests and rollback environments if tests fail.
- Providing log data and alerts on the state of the delivery.
As an example, Jenkins users define their pipelines in a Jenkinsfile that describes different stages such as build, test, and deploy. Environment variables, options, secret keys, certifications, and other parameters are declared in the file and then referenced in stages. The post section handles error conditions and notifications.
- Jenkins is a free and open source Automation server.
- Jenkins is an open-source automation tool written in Java with plugins built for Continuous Integration purposes.
- Jenkins also supports version control tools like Subversion, Git, Mercurial, and Maven.
- It helps automate the parts of software development related to building, testing, and deploying, facilitating continuous integration and continuous delivery.
Nginx and Apache are two very famous open source web servers in the world.
Apache + nginx => 70%;
You can place Nginx <<in front>> of Apache as a reverse proxy.
- Nginx, pronounced like “engine-ex”, is an open-source web server that, since its initial success as a web server, is now also used as a reverse proxy, HTTP cache, and load balancer.