---
# System prepended metadata

title: CI/CD
tags: [IT工具]

---

---
title: CI/CD
---


#### 1. 什麼是 CICD？
CICD 是一種軟體開發方法論，包括持續集成（Continuous Integration）和持續部署（Continuous Deployment）兩個主要流程。
CI指將開發者的程式碼持續集成到共享的主幹（主要程式碼庫）中，並進行自動化測試，以確保程式碼的一致性和品質。CD指自動化地將測試通過的程式碼部署到生產環境中，實現快速、頻繁且可靠地交付更新。

---

#### 2. CICD 流程通常包括以下步驟：
程式編寫：開發者根據需求和規範編寫程式碼。
持續集成：開發者將代碼提交到共享的主幹，自動化的持續集成平台將會觸發測試、構建和部署流程。
自動化測試：包括單元測試、集成測試、功能測試等，確保程式碼的品質和功能正常。
自動化構建：將程式碼編譯、打包、製作軟體映像或容器，準備部署到各個環境。
自動化部署：將測試通過的程式碼部署到測試、預生產和生產環境中。
監控與反饋：監控部署的應用程式，收集日誌和指標，以確保應用程式的運行狀態和性能，並及時反饋給開發者。

---

#### 3. CI/CD pipeline consists of the following phases/stages
![CICD](https://hackmd.io/_uploads/ryDVgrUxC.jpg)
- 1. **Code:** Checked into the repository
- 2. **Build:** Build is triggered and deployed in a test environment
- 3. **Test:** Automated tests are executed
- 4. **Deploy:** Code is deployed to stage, and production environments.

#### 4. CICD 流程中常見工具
- **版本控制系統：** 如 Git, Bitbucket，用於管理和共享程式碼。
- **持續集成工具：** 如 Jenkins、CircleCI、Travis CI 等，用於自動化測試和構建。
- **容器平台：** 如 Docker、Kubernetes 等，開發者可以使用 Docker 容器將應用程式部署到不同的環境中，並確保應用程式在各個環境中運行一致性，k8s用於自動化部署、擴展和操作容器化的應用程式。
- **部署工具：** 如 Ansible、Chef、Puppet 等，用於自動化部署和配置管理。