在今天的文章中,我將簡單介紹持續交付的核心原則、佈署策略,及如何在 Azure DevOps 中實現它。
持續交付(Continuous Delivery, CD)是 DevOps 中的重要一環,它的目標是讓應用程式能夠隨時佈署到生產環境(正式環境)。通過自動化構建、測試和佈署流程,能夠大幅度減少軟體交付的風險和時間成本,並提高團隊的敏捷性!
圖片來源
自動化佈署流程
持續交付的第一步是確保佈署流程完全自動化。這意味著每個應用程式更新都可以通過單一指令或事件觸發,自動完成構建、測試及佈署,無需手動干預。
持續測試與驗證
在每次程式碼變更後,自動化測試應該自動運行,並在佈署之前確保應用程式的穩定性與正確性。持續測試包括單元測試、集成測試以及端到端測試,這些測試過程可確保應用程式在更新後能夠正確運行。
隨時可佈署的狀態
一個持續交付的系統,應用程式無論何時都應該處於「可佈署」狀態。這樣不僅能讓團隊快速響應市場需求,還能確保當需要修補漏洞或解決生產問題時能立即發布更新(Release)。
小而頻繁的變更
持續交付強調頻繁的小變更,而不是大規模的更新。這樣能夠降低每次變更的風險,並更容易發現與修復問題。
版本控制與環境一致性
使用版本控制來管理程式碼和配置文件,並確保開發、測試和正式環境的配置一致性,這樣能夠減少在不同環境之間移動程式碼時發生的錯誤。
在 CD Pipeline 中,可以根據需求配置不同的佈署策略,例如:
持續交付還應包括佈署驗證的步驟,例如:
縮短交付週期
持續交付使得應用程式能更快、更頻繁地推送至正式環境,減少了產品上市時間。
減少風險
因為持續交付強調小而頻繁的變更,這樣更容易檢測問題並快速修復,降低了每次佈署的風險。
提高團隊效率
團隊不再需要手動進行測試與佈署,這減少了人力成本並提升了整體效率。
增強市場競爭力
持續交付讓團隊能夠快速迭代產品,應對市場變化和用戶需求,增強了競爭力。
在 Azure DevOps 中設置持續交付 (CD) 能夠幫助我們將應用程式自動佈署至正式環境。
以下是一個簡單的 YAML 文件範例,展示如何通過 Azure Pipelines 佈署一個 Python Web 應用程式到 Azure App Service。
# 這是用來實現持續整合與持續交付的 YAML 文件
trigger:
- main # 當 main 分支有任何變更時觸發 Pipeline
pool:
vmImage: 'ubuntu-latest' # 使用的虛擬機映像
steps:
# 設定 Python 版本
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
displayName: '選擇 Python 版本'
# 安裝 Python 依賴項
- script: |
python -m pip install --upgrade pip
pip install -r requirements.txt
displayName: '安裝依賴項'
# 執行單元測試
- script: |
pytest
displayName: '執行單元測試'
# 構建專案並準備佈署
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/app.zip'
displayName: '壓縮應用程式檔案'
# 發佈構建產物
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)/app.zip'
ArtifactName: 'drop'
displayName: '發佈構建產物'
# 佈署至 Azure App Service
- task: AzureWebApp@1
inputs:
azureSubscription: '<Your-Azure-Subscription>' # 替換成你的 Azure 訂閱
appName: '<Your-App-Service-Name>' # 替換成你的應用程式服務名稱
appType: webApp
package: '$(Build.ArtifactStagingDirectory)/drop/app.zip'
displayName: '佈署到 Azure App Service'
這個 YAML 文件中的關鍵步驟是將應用程式佈署到 Azure Web App,以下是步驟的詳細解釋:
選擇 Python 版本
在 UsePythonVersion@0
這個步驟中,選擇要使用的 Python 版本。
安裝依賴項
透過 pip install
指令來安裝 requirements.txt
中定義的所有依賴項。
執行測試
使用 pytest
來執行單元測試,確保應用程式的正確性。
壓縮應用程式
使用 ArchiveFiles@2
來將應用程式的所有檔案壓縮成 .zip
檔案,準備進行佈署。
發佈構建產物
使用 PublishBuildArtifacts@1
來發佈壓縮後的應用程式檔案。
佈署到 Azure Web App
使用 AzureWebApp@1
來將壓縮後的應用程式檔案佈署到 Azure Web App 中。記得替換 azureSubscription
和 appName
參數為你的 Azure 訂閱和應用程式名稱。
main
分支時自動觸發。持續交付(CD) 是 DevOps 的核心實踐之一,通過自動化構建、測試和佈署流程,開發團隊能夠更高效地將應用程式交付給使用者。無論是縮短交付週期、提高交付質量,還是降低風險,CD 都為企業帶來了巨大的競爭優勢。在 Azure DevOps 的支持下,我們可以簡單地實現持續交付,並利用容器化技術、Kubernetes 及 GitOps 等工具,進一步提升應用程式的可擴展性和可靠性!💪
明天的文章將聚焦於 YAML 文件的深入探討,並展示如何使用 YAML 文件來定義 CI/CD 工作流程。