持續整合和持續交付(CI/CD)是指透過使用自動化管道,以短而頻繁的週期來開發和交付軟體的過程。 CI/CD 在軟體開發中很常見,並且在資料工程和資料科學中變得越來越必要。 透過自動化程式碼建置、測試與部署,開發團隊比手動流程更可靠地交付版本。
Databricks 提供開發 CI/CD 管線的工具,這些流程支援因組織軟體開發生命週期獨特性而可能略有差異的方法。 此頁面提供 Databricks 上 CI/CD 管線可用工具的相關資訊。 如需 CI/CD 建議和最佳做法的詳細資訊,請參閱 Databricks 上的最佳做法和建議的 CI/CD 工作流程。
如需 Azure Databricks 上機器學習專案的 CI/CD 概觀,請參閱 Databricks 如何支援機器學習的 CI/CD?。
高層次流程
Azure Databricks CI/CD 管線的常見流程如下:
-
版本:將您的 Azure Databricks 程式碼和筆記本儲存在 Git 等版本控制系統中。 這使您可以追蹤一段時間內的變化並與其他團隊成員協作。
- 個別使用者會使用 Git 資料夾來撰寫和測試變更,然後再將變更提交至 Git 存放庫。 請參閱 具有 Databricks Git 資料夾的 CI/CD。
- 選擇性地設定 套件組合 Git 設定。
-
程式碼:在工作區的 Azure Databricks 筆記本中開發程式碼和單元測試,或使用 IDE 在本機開發程式碼和單元測試。
- 使用 Lakeflow 管線編輯器 在工作區中開發管線。
- 使用 Databricks Visual Studio Code 延伸模組 來開發本機變更並將其部署至 Azure Databricks 工作區。
-
建置:使用 Databricks 資產套件組合設定,在部署期間自動建置特定成品。
- 設定套件配置 人工產物 映射。
- Pylint 與 Databricks Labs 的 pylint 外掛 一起擴充,有助於強制執行編碼標準並偵測 Databricks 筆記本及應用程式程式碼中的錯誤。
-
部署:使用 Databricks 資產套件組合搭配 Azure DevOps、 GitHub Actions 或 Jenkins 等工具,將變更部署至 Azure Databricks 工作區。
- 使用服務包 部署模式設定部署。
- 如需使用 Azure DevOps 和 Databricks 的詳細資訊,請參閱 使用 Azure DevOps 在 Azure Databricks 上持續整合和傳遞。
- 如需 Databricks GitHub Actions 範例,請參閱 GitHub Actions。
-
測試:開發並運行自動化測試以驗證您的代碼更改。
- 使用 pytest 等工具來測試您的整合。
-
執行:使用 Databricks CLI 搭配 Databricks 資產套件組合,將 Azure Databricks 工作區中的執行自動化。
- 使用 databricks bundle run 執行資源。
- 監視:使用 作業監視等工具,監視 Azure Databricks 中程式碼和生產工作負載的效能。 這可協助您識別並解決生產環境中出現的任何問題。
可用工具
下列工具支援 CI/CD 核心原則:版本控制所有檔案並統一資產管理、將基礎架構定義為程式碼、隔離環境、自動化測試,以及監控和自動化復原。
| 面積 | 當您要...時,請使用這些工具... |
|---|---|
| Databricks 資產套件組合 | 使用 CI/CD 最佳做法和流程,以程式設計方式定義、部署和執行資源,包括 Lakeflow 作業、Lakeflow Spark 宣告式管線和 MLOps 堆疊。 |
| Databricks Terraform 提供者 | 使用 Terraform 布建和管理 Databricks 工作區和基礎結構。 |
| 使用 Azure DevOps 在 Azure Databricks 上進行持續整合和傳遞 | 針對使用 Azure DevOps 的 Azure Databricks 開發 CI/CD 管線。 |
| 在 Azure Databricks 上使用 Azure DevOps 進行驗證 | 使用 Azure DevOps 進行驗證。 |
| GitHub Actions(GitHub 行動) | 在您的 CI/CD 流程中包含針對 Azure Databricks 開發的 GitHub 動作。 |
| 在 Azure Databricks 上結合 Jenkins 進行 CI/CD | 使用 Jenkins 為 Azure Databricks 開發 CI/CD 管線。 |
| 使用 Apache Airflow 協調 Lakeflow 作業 | 管理及安排使用 Apache Airflow 的資料管線。 |
| CI/CD 的服務主體 | 搭配 CI/CD 使用服務主體,而不是使用者。 |
| 使用 OAuth 權杖同盟驗證對 Azure Databricks 的存取權 | 使用工作負載身份聯邦進行 CI/CD 的身份驗證,這不需要 Databricks 密鑰,從而成為對 Databricks 進行驗證的最安全方式。 |
Databricks 資產套件組合
Databricks 資產套件組合 是 Databricks 上 CI/CD 的建議方法。 使用 Databricks 資產套件組合來描述 Databricks 資源,例如作業和管線作為來源檔案,並將它們與其他資產組合在一起,以提供可部署專案的端對端定義。 這些檔案組合可以受到原始檔控制,而且您可以使用外部 CI/CD 自動化,例如 Github Actions 來觸發部署。
套件組合包含許多功能,例如用於在整個組織中強制執行一致性和最佳做法的自訂範本,以及部署許多 Databricks 資源的程式碼檔案和設定的完整支援。 撰寫一個套件需要對 套件組態語法有一定的了解。
如需如何在 CI/CD 中使用套件組合的建議,請參閱 Databricks 上的最佳做法和建議的 CI/CD 工作流程。
其他原始檔控制工具
作為使用 Databricks 資產包套用完整 CI/CD 的替代方案,Databricks 提供僅限版本控制和部署程式碼檔案及筆記本的選項。
Git 資料夾:Git 資料夾可用來反映遠端 Git 儲存庫的狀態。 您可以建立用於生產的 git 資料夾,以管理受版本控制的原始檔和 notebook 文件。 然後手動將 Git 資料夾拉到最新狀態,或使用外部的 CI/CD 工具,例如 GitHub Actions,在合併時拉取 Git 資料夾。 當你無法存取外部 CI/CD 管線時,請使用這種方法。
此方法適用於外部協調器,例如 Airflow,但請注意,只有程式碼檔案 (例如筆記本和儀表板草稿) 位於原始檔控制中。 在 Git 資料夾中執行資產的工作或管線的設定,以及發佈儀表板的設定不在原始檔控制中。
Git with jobs:Git with jobs 允許你設定某些工作類型,將遠端 Git 倉庫作為程式碼檔案的來源。 當工作執行開始時,Databricks 會對儲存庫進行快照,並針對該版本執行所有任務。 此方法僅支援有限的工作任務,且只有程式碼檔案(筆記本及其他檔案)是原始碼控制的。 工作設定如任務序列、計算設定與排程不受原始碼控制,使此方法不適合多環境、跨工作空間部署。