CI (Continuous Integration) and CD (Continuous Delivery and Continuous Deployment) is a software engineering method or practice that allows developers to integrate, deliver, and deploy their programs from multiple code bases more frequently, without the need to wait until all codes are finished. This avoids some unnecessary program bugs.
In the development process, it is usual for developers to run into problems, such as compilation or runtime errors, incorrect output, or features not working after build, during the code integration. In large-scale and complex software development, the integration problems become unsolvable or difficult while developers’ development environments change or are different from before, or while developers add or modify more features to their programs before integrating them together. The worst case is that it results in the rebuild of developing program.
In the process of CI/CD, it involves many concepts and task flows, including version control, code warehouse, environment deployment, testing log, and release management. Meanwhile, after passing various tests, developers require to ensure the consistency and quality of software features, which is complex and time-consuming; therefore, they can rely on some automation tools to achieve our goals.
Currently there are some related CI/CD tools such as famous Jenkins, Drone based on Docker, Travis-CI that supports OSX, Circle-CI that offers free enterprise version, and Gitlab that provides complete DevOps. The above-mentioned CI/CD tools are similar to each other in terms of features and functionalities.
Lastly, CI/CD plays a vital role in DevOps practice. By incorporating CI/CD, developers can build, test, and deploy software faster and more reliable so that the relationship of development and operation can be strengthened and improved.
撰文: 鄭毓融 迎棧科技軟體工程師