實作 Azure SQL Database 的持續整合與持續傳遞
您現在已知道如何部署、設定及使用 Azure SQL Database,為現代化應用程式打造強大的基礎。 應用程式需求不斷演進和變更,因此下一個步驟是了解如何在需要時更新資料庫。 開發作業 (DevOps) 是一套實用的準則和做法。
DevOps 結合人員、流程和技術,持續為客戶帶來價值。 採用 DevOps 文化特性、做法和工具的小組可展現極高的效能: 更快速建立更好的產品,獲得更高的客戶滿意度。
資料庫是解決方案的其中一個主要部分,因此能夠讓您的資料庫與您的 DevOps 實務整合,是現代化和敏捷式應用程式開發的關鍵所在。
Azure SQL 提供多種方法將資料庫納入 DevOps 程序。 持續整合 (CI) 和持續傳遞 (CD) 管道是 DevOps 環境的骨幹,而 Azure SQL 可與您選擇的任何 CI/CD 工具完全整合。 Azure 中最廣泛使用的其中兩個工具是 GitHub Actions 和 Azure DevOps。
實作資料庫的持續整合與持續傳遞
將資料庫納入 CI/CD 管道表示您希望以完全自動化、可重現且確定性的方式,來設定並部署結構 (或許甚至是部分資料)。 設定後,您可以隨時不限次數地執行部署或更新程序,並取得一致的結果。
在此單元中,您會了解為資料庫實作 CI/CD 管道的三種主要方法:
- 所需狀態
- Code First 移轉
- 自訂指令碼
使用所需狀態方法搭配 SqlPackage.exe
在「所需狀態」方法中,您會建立參考資料庫的結構快照集,以代表所需狀態。 您接著可以使用該快照集,將另一個目標資料庫 (通常是測試或實際執行資料庫) 同步處理為所需狀態。 您可以使用 SqlPackage.exe 等工具來將快照集同步至 .dacpac
檔案中。 當 .dacpac
套用至目標資料庫時,將會自動尋找差異、產生正確的指令碼,然後套用該指令碼,使目標結構描述與參考同步。
在搭公車案例中,我們使用了「所需狀態」方法;這在我們討論的三種方法中,可能是最容易且最簡單的方法。
根據您的語言實作 Code First 移轉
如果您不想撰寫 T-SQL 指令碼,而是希望讓 C#、Python 或 Node 和解決方案中定義的實體 (例如公車、路線或地點) 自動產生資料庫和結構描述,則還有另一個選項。 通常會有隨附於或適用於平台或架構的特定工具。 這些工具可確保每次變更或新增欄位或實體時,資料庫會反映新的結構。 在本課程模組的結尾,您可以找到適用於特定平台和架構的工具參考。
使用手動指令碼逐步完成部署
在手動撰寫指令碼的方法中,開發人員需要謹慎撰寫並維護必要的指令碼,以建立資料庫並隨著時間變更資料庫。 在實際執行環境中部署指令碼之後,該指令碼便不會再變更;如果有必要,開發人員必須建立新的指令碼。 每個指令碼包含將資料庫演進成為新的結構描述所需的程式碼。 在需要從頭開始部署資料庫的情況下,必須以正確順序執行所有指令碼,以確保資料庫能正確建立和演進。 部署好指令碼之後,您可以使用工具 (例如 SQL Server Data Tools (SSDT) 中的結構描述比較公用程式) 來比較資料庫定義。 這有助於確保所部署的指令碼不會在後續執行中再次套用至相同的資料庫。
選取管線工具來輕鬆實作持續整合與持續傳遞
識別出最適合用來更新資料庫的方法之後,即可從兩個常見的解決方案 Azure DevOps 或 GitHub Actions 中擇一來予以實作。
使用 Azure DevOps 來實作持續整合與持續傳遞
Azure DevOps 是一套完整支援所有 DevOps 層面的產品,包括 CI/CD 管道。 管線由工作組成,工作會定義管線的步驟。 從執行可執行檔到建立 .NET 解決方案,幾乎什麼都可以成為「工作」。 您可以使用一個名為 Azure SQL Database 部署工作的特定工作來部署 .dacpac
檔案,或執行 .sql 指令碼。
使用 GitHub Actions 實作 CI/CD
GitHub Actions 允許 CI/CD 管道的定義。 您使用 「Action」 來建立管道的步驟。 您可以使用「Action」來執行幾乎任何類型的流程。 Azure SQL 部署這個 Action 可讓您部署 .dacpac
檔案。
在下一個練習中,您會使用 Azure SQL Actions 部署並更新資料庫結構描述,了解其實際運作的方式。