搶佔先機
VMware 提供培訓和認證,助力您的進步。
瞭解更多Spring Cloud Pipelines 是一個試圖解決以下問題的 GitHub 專案
建立通用的部署流水線
推廣良好的測試和部署實踐
減少將功能部署到生產環境所需的時間。
第一次提交發生在 2016 年 8 月 31 日。自那時以來,我們收到了來自社群的關於建議的部署流水線及其具體視覺化的大量反饋。在這兩年裡,我們成功構建的最重要功能包括
帶有觀點的部署流水線設定
流水線指令碼,用於驗證專案的向後相容性並實現零停機部署
支援 PHP、.NET、NodeJS 和 JVM (Maven & Gradle) 專案
Cloud Foundry 的部署選項
Kubernetes 的部署選項
透過 Ansible 的部署選項
使用 Jenkins Job DSL 在 Jenkins 中實現流水線視覺化
使用 Jenkinsfile 在 Jenkins 中實現流水線視覺化
在 Concourse 中實現流水線視覺化
我們宣佈 1.0.0.M9 版本的 Spring Cloud Pipelines 釋出,這也將是其當前形式的最後一個版本。
由於我是 Spring Cloud 團隊的成員,我們決定將其置於 Spring Cloud 旗下。除此之外,該專案與 Spring Cloud 沒有任何關係,更不用說一般的 Spring 了。
這就是為什麼我們決定將專案拆分成多個部分,重新命名,並將其放到一個獨立的 GitHub 組織下。
Spring Cloud Pipelines 有了新家和新名字。該專案現在位於 GitHub 的 Cloud Pipelines 組織下。因此,專案被拆分成了以下幾個部分
Scripts:包含部署流水線的核心邏輯。你可以稱這個倉庫為 recipes
。每個 recipe 包含部署流水線的一個步驟。文件在這裡。
Project Crawler:對從倉庫管理服務獲取資料的抽象。
Pipeline Base:CI 伺服器使用的 Docker 基礎映象。
將專案遷移到新組織後,我們決定將其標記為 功能完備。我們已經開發 Spinnaker 一段時間了,並計劃投入資源,使 Cloud Pipelines 的回滾測試和契約測試 recipes 能夠在 Spinnaker 上執行。對於其他重疊領域,如部署策略,我們希望依賴 Spinnaker 的抽象。當然,我們將促進圍繞專案的任何討論,並處理與問題、拉取請求和釋出相關的雜務,但我們可以有把握地說,該專案將完全由社群驅動和維護。
如果您有興趣將您的專案從 Spring Cloud Pipelines 遷移到 Cloud Pipelines,您應該檢視遷移指南
Spinnaker 是一個開源的多雲持續交付平臺,始於 Netflix,現在有來自 Google、Amazon、Pivotal 和許多其他公司的貢獻者組成的更廣泛社群參與其中。Spring 團隊和 Pivotal Cloud R&D 的協作努力促成了 Spinnaker 對 Cloud Foundry 的支援。
Spinnaker 使我們能夠訪問更廣泛的支援的雲提供商,而無需重新發明這些互動。
Cloud Pipelines 在零停機部署和回滾測試方面的工作揭示了像 Spinnaker 這樣的持續交付平臺的關鍵價值,該平臺單獨維護已部署環境中資產的清單。
在 Cloud Pipelines 中,沒有儲存當前的生產系統狀態。為了緩解這個問題,我們使用 Git 標籤來儲存狀態。然而,當進行手動部署或回滾時,這很容易被破壞。此外,生產系統狀態可能跨越多個版本(跨雲提供商或區域),並且通常無法簡化為可以儲存在標籤中的單個值。例如,執行回滾測試的 Spinnaker 流水線可以自由地利用 Spinnaker 對系統狀態的瞭解,將回滾測試上下文關聯到目標區域的生產版本,而彼此獨立。
Cloud Pipelines 中提供的部署選項有限。Spinnaker 將藍/綠、滾動推送、零停機和自動金絲雀分析部署功能推廣到一系列受支援的雲提供商。
更具體地說,考慮藍/綠部署。Spinnaker 支援藍/綠部署,同時維護任意數量的先前版本伺服器組。在下面的示例中,從應用程式的當前版本,您只需一步操作即可回滾到距離最新版本幾個版本的應用程式。在任何時候,我們都可以選擇銷燬 V022,
從而有效地使其無法回滾。這種事情可能發生在部署活動之外(例如為了釋放容量),這使得無狀態系統更難應對變化。
我們歡迎您以各種形式提供寶貴意見。如果您對 Spinnaker 有疑問,請在 Stack Overflow 上提問並使用 #spinnaker
標籤。如果是 Cloud Pipelines,請在 GitHub 上提問。如果您想貢獻程式碼,我們非常歡迎拉取請求。如果您發現問題,請在 Github 上提交 issue。