什麼是 CI/CD? - reddit
作為一名想要成為 DevOps 工程師的人,肯定想了解什麼是 CI/CD 以及我們為什麼需要它們?
CI/CD 是語言/執行時(例如 Java/OpenJDK、JS/Node、Ruby、Docker 容器中的某些東西)之間的粘合程式碼,包括交付(取決於您的工件型別,例如 Docker 容器、Maven 儲存庫、符合 npm登錄檔)和您想要執行的環境的部署機制(例如 Docker、帶有 docker-compose 的 Docker、Ansible、Kubernetes、帶有 Helm 的 Kubernetes、帶有 kustomize 的 Kubernetes 等)
CI/CD 是獲取原始碼儲存庫和新推送的更改、構建它並執行測試和/或在收到更改後實時部署更改的軟體。
這樣開發人員就可以推送更改,這些更改將自動持續整合和持續部署。
每當修復錯誤或建立新功能時,都會建立一個測試或一組測試,這些測試可以自動執行以確保該功能沒有損壞或錯誤沒有退化。
CI是指持續整合
持續意味著定期/一直在做。整合意味著有不同的人/不同的公司編寫的程式碼,你需要在同一個程式碼庫中新增這些程式碼,並確保沒有什麼被破壞。編譯和執行自動化測試是其中的一個重要部分。
編寫軟體是一項團隊運動。僅僅因為一個錯字就很容易破壞軟體,如果你沒有自動測試,你就會破壞過去工作的東西,在你的客戶發現之前不會發現。
持續整合是定期將程式碼與組織的其他部分整合(合併)的做法。過去,個人或團隊經常將他們的程式碼在分支中隔離數月,並且很少合併。
CD可以指持續交付或持續部署
有時人們在一個管道中建立這個,有時是兩個不同的管道。交付和部署是否是同義詞並不是100%清楚,這在很大程度上取決於你構建什麼樣的應用程式。
對於一個最先進的網路應用,你可能會在交付管道中構建Docker映象,並在交付管道中將其部署到Kubernetes。由於你需要在不同的環境中進行測試,你可能有步驟或單獨的管道來部署到某種測試環境和生產環境。
你需要這樣做,因為你想經常部署小的增量變化。你不希望建立了6個月,然後有一個星期的軟體安裝停機時間,並且不知道它在生產中是否有效。
如果你發現你的小改動引入了一個錯誤,那就很容易回滾和修復。如果你的6個月的大改動引入了問題,你怎麼知道你在哪裡和什麼時候做了破壞性的改動?
持續交付是始終保持應用程式處於可部署狀態的一種理念和一套實踐。為了實現這一點,我們構建了一個部署管道,用於驗證更改的正確性,並通過一系列測試環境交付這些更改,最終進行生產部署。
CI/CD 一起是在開發人員工作時頻繁合併更改並讓這些更改通過一系列自動化測試的做法。完成後,這些更改將捆綁到一個釋出候選中,然後可以自動部署到生產中。練習 CI/CD 的團隊通常會在一天內產生許多候選版本。
相關文章
- 應該使用什麼 CI/CD 工具?
- 簡述如何使用ArgoCD實現CI/CD部署? - redditGo
- 詳解CI、CD & CD
- CI/CD理解
- 人們對Java最不滿的是什麼? - RedditJava
- Reddit網友:辯證法到底是什麼?
- CI Weekly #8 | CI/CD 技能進階路線
- Gitlab-CI/CD 2Gitlab
- 前端初探 Gitlab CI/CD前端Gitlab
- java ci/cd環境搭建Java
- gitlab 實現CI/CDGitlab
- CI和CD之間的真正區別 -Fire CI
- Rust語言最獨特的特點是什麼? - RedditRust
- 純 Git 實現前端 CI/CDGit前端
- 基於 GitLab CI 的前端工程CI/CD實踐Gitlab前端
- Drone CI For Github —— 打造自己的CI/CD工作流(一)Github
- CI Weekly #6 | 再談 Docker / CI / CD 實踐經驗Docker
- 有狀態Stateful,富含資料的CI/CD怎麼做?
- CI/CD 持續整合部署實踐
- .Net微服務實戰之CI/CD微服務
- SAP ABAP的CI/CD解決方案
- Android Gitlab CI/CD指令碼AndroidGitlab指令碼
- 使用Github Action 進行CI-CDGithub
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- CI Weekly #14 | 如何構建合適的 CI/CD 開發流程?
- Flutter App 使用 Github Actions 進行 CI/CDFlutterAPPGithub
- Golang基於Gitlab CI/CD部署方案GolangGitlab
- 微服務架構下 CI/CD 如何落地微服務架構
- 技術番外篇丨Github Action CI/CDGithub
- 如何使用通用軟體簡化CI/CD?
- GitLab CI-CD 學習筆記Gitlab筆記
- GitLab-CI/CD入門實操Gitlab
- 為什麼我如此討厭scrums? - RedditScrum
- 基於OpenStack+Docker設計與實現CI/CD——基於Docker技術的CI&CD實踐Docker
- 是什麼妨礙了人們升級到Java 8以上版本? - RedditJava
- 輕量化自建 Drone CI For Gitea —— 打造自己的CI/CD工作流(三)Git
- Linux中什麼是工作目錄?linux cd命令如何使用?Linux
- Serverless 實戰 —— Funcraft + OSS + ROS 進行 CI/CDServerRaftROS