--- 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 等,用於自動化部署和配置管理。