CI CD
CI CD
By Vikas S
Continuous Integration
CI is the practice of automating integration of code changes from multiple contributors into a single
project. It allows developers to frequently merge code changes into a central repository.
A source code version control system is at the heart of the CI process.
Without CI, developers need to manually contact when they contribute to the end product. This
coordination may extend beyond the development teams to operations or rest of the organization.
Hence, the overhead caused in a non-CI environment can cause project delays and entangled
synchronization issues.
Continuous Delivery automates the release of validated code to a repository following the automation
of builds and unit and integration testing in CI. So, in order to have an effective continuous delivery
process, it is important that the CI is already built into your development pipeline.
In continuous Delivery, every stage involves test automation and code release automation. At the end,
the operations team is able to deploy an app to production swiftly.
Continuous Deployment is an extension of continuous delivery and can refer to automating the
releases of the developers changes from repository to production, where it is usable by customers.
Continuous Deployment addresses the problem of overloading operations team with manual processes
that slow down app delivery.
Best Practices
Frequent Commits: Committing and sharing your code often can help avoid “hard to find” bugs
caused after a big commit ( commit with server files and many lines of code). The rule of thumb is to
commit at least once a day.
Secure the pipeline: The CI/CD pipeline provides access to your code and credentials to deploy to
production, making it a prime target for attackers. This involves managing version control access,
credential management, dependency checks, principle of least privilege, etc.
Stick to the process: Once efforts are invested in the CI/CD pipeline, there should not be any bypasses.
Often the CI/CD pipeline is bypassed for minor changes, however it can yield to undetected bugs and
diagnosing becomes more difficult.
Monitoring and measuring the pipeline: Part of the pipeline is to implement monitoring of the
production environment. The best practice here is to introduce an analogous form of monitoring for
the CI/CD pipeline itself.
Tools
● Jenkins
● Team city
● Circle CI
● Travis CI
● Gitlab CI
● Bamboo
● Github Actions