CI/CD
{{Short description|Software development methodology}}
{{For|corporate communication topics|Corporate identity|Corporate design}}
{{Software development process}}
In software engineering, CI/CD or CICD is the combined practices of continuous integration (CI) and continuous delivery (CD) or, less often, continuous deployment.{{Cite news |url=https://www.infoworld.com/article/3271126/what-is-cicd-continuous-integration-and-continuous-delivery-explained.html|title=What is CI/CD? Continuous integration and continuous delivery explained|last=Sacolick|first=Isaac|date=2020-01-17|work=InfoWorld|access-date=2021-06-01|language=en}} They are sometimes referred to collectively as continuous development or continuous software development.{{cite web | url=https://www.synopsys.com/glossary/what-is-continuous-development.html | title=What is Continuous Development and How Does It Work? | Synopsys }}
Components
;Continuous integration: Frequent merging of several small changes into a main branch.
;Continuous delivery: Producing software in short cycles with high speed and frequency so that reliable software can be released at any time, with a simple and repeatable deployment process when deciding to deploy.
;Continuous deployment: Automatic rollout of new software functionality.
Motivation
CI/CD bridges the gaps between development and operation activities and teams by enforcing automation in building, testing and deployment of applications. CI/CD services compile the incremental code changes made by developers, then link and package them into software deliverables.{{cite book |first=Sander |last=Rossel |title=Continuous Integration, Delivery, and Deployment |date=October 2017 |publisher= Packt Publishing |isbn=978-1-78728-661-0}} Automated tests verify the software functionality, and automated deployment services deliver them to end users.{{cite book |first=Keheliya |last=Gallaba |title=2019 IEEE International Conference on Software Maintenance and Evolution (ICSME) |chapter=Improving the Robustness and Efficiency of Continuous Integration and Deployment |date=2019 |pages=619–623 |doi=10.1109/ICSME.2019.00099|isbn=978-1-7281-3094-1 |s2cid=208879679 |chapter-url=https://escholarship.mcgill.ca/concern/theses/wd376267t }} The aim is to increase early defect discovery, increase productivity, and provide faster release cycles. The process contrasts with traditional methods where a collection of software updates were integrated into one large batch before deploying the newer version.
Modern-day DevOps practices involve:
- continuous development,
- continuous testing,
- continuous integration,
- continuous deployment, and
- continuous monitoring
of software applications throughout its development life cycle. The CI/CD practice, or CI/CD pipeline, forms the backbone of modern day DevOps operations.
Best practices for cloud systems
The following practices can enhance productivity of CI/CD pipelines, especially in systems hosted in the cloud:{{Cite book |title=Serverless Architectures on AWS |publisher=Manning |isbn=978-1617295423}}{{Cite book |title=Pipeline as Code Continuous Delivery with Jenkins, Kubernetes, and Terraform |publisher=Manning |isbn=9781638350378}}{{Cite book |title=Continuous Delivery Reliable Software Releases Through Build, Test, and Deployment Automation |isbn=9780321670229}}
- Number of Pipelines: Small teams can be more productive by having one repository and one pipeline. In contrast, larger organizations may have separate repositories and pipelines for each team or even separate repositories and pipelines for each service within a team.
- Permissions: In the context of pipeline-related permissions, adhering to the principle of least privilege can be challenging due to the dynamic nature of architecture. Administrators may opt for more permissive permissions while implementing compensating security controls to minimize the blast radius.
See also
- Continuous integration (CI)
- Continuous delivery (CD)
- Continuous deployment (CD)
References
{{Reflist}}
External links
- {{cite book |first1=B. |last1=El Khalyly |first2=A. |last2=Belangour |first3=M. |last3=Banane |first4=A. |last4=Erraissi |title=2020 IEEE 2nd International Conference on Electronics, Control, Optimization and Computer Science (ICECOCS) |chapter=A new metamodel approach of CI/CD applied to Internet of Things Ecosystem |date=2020 |pages=1–6 |doi=10.1109/ICECOCS50124.2020.9314485 |isbn=978-1-7281-6921-7 |s2cid=231645681 |chapter-url=https://ieeexplore.ieee.org/document/9314485}}
- {{cite book |first=P. |last=Sane |title=2021 Sixth International Conference on Wireless Communications, Signal Processing and Networking (WiSPNET) |chapter=A Brief Survey of Current Software Engineering Practices in Continuous Integration and Automated Accessibility Testing |date=2021 |pages=130–134 |doi=10.1109/WiSPNET51692.2021.9419464 |arxiv=2103.00097 |isbn=978-1-6654-4086-8 |s2cid=232076320 |chapter-url=https://ieeexplore.ieee.org/document/9419464}}
{{Software engineering|state=expanded}}
{{DEFAULTSORT:CI CD}}