文章

持續整合與部署 (CI/CD)

持續整合與部署 (CI/CD) 是現代軟體開發和運維中的關鍵實踐。這些方法使團隊能夠頻繁且可靠地交付軟體更新,減少錯誤並提高開發效率。Azure 提供了多種工具和服務來實現 CI/CD 流程,特別是透過 Azure DevOps 和 GitHub Actions。以下是如何在 Azure 中設置和管理 CI/CD 流程的詳細指南。

1. CI/CD 概述

  • 持續整合 (CI):指的是頻繁地將代碼變更合併到共享代碼庫中,並進行自動化測試以確保變更不會破壞現有的功能。
  • 持續部署 (CD):指的是自動化將通過測試的代碼變更部署到生產環境中,縮短從開發到交付的時間。

2. 使用 Azure DevOps

Azure DevOps 概述

Azure DevOps 是一個全面的開發工具集,提供了持續整合和持續部署的功能。它包括 Azure Repos、Azure Pipelines、Azure Test Plans、Azure Artifacts 和 Azure Boards。

設置 CI/CD 流程

  1. 創建 Azure DevOps 組織和專案
    • 登錄到 Azure DevOps
    • 創建一個新的組織和專案,將您的代碼庫和管道與專案關聯。
  2. 配置代碼庫
    • Azure Repos:將您的源代碼推送到 Azure Repos,這是 Azure DevOps 提供的版本控制系統。您可以選擇 Git 或 Team Foundation Version Control (TFVC)。
  3. 設置持續整合 (CI)
    • 創建管道:在 Azure Pipelines 中創建新的管道,選擇「從 GitHub」或「從 Azure Repos」來設置 CI。
    • 配置 YAML 文件:編輯 YAML 配置文件以定義構建和測試步驟。示例 YAML 配置文件如下: ```yaml trigger:
      • main

      pool: vmImage: ‘ubuntu-latest’

      steps:

      • task: UseDotNet@2 inputs: packageType: ‘sdk’ version: ‘5.x’

      • task: DotNetCoreCLI@2 inputs: command: ‘restore’

      • task: DotNetCoreCLI@2 inputs: command: ‘build’

      • task: DotNetCoreCLI@2 inputs: command: ‘test’ ```

  4. 設置持續部署 (CD)
    • 創建發布管道:在 Azure Pipelines 中創建發布管道,將構建產物部署到不同的環境中。
    • 配置部署階段:定義部署步驟,例如將應用程序部署到 Azure Web Apps、虛擬機器或 Kubernetes 叢集。
  5. 配置持續測試
    • 在 CI 管道中集成自動化測試,例如單元測試和集成測試。可以使用 Azure Test Plans 來管理測試和測試結果。

3. 使用 GitHub Actions

GitHub Actions 概述

GitHub Actions 是 GitHub 提供的 CI/CD 工具,允許您在代碼變更時自動執行構建、測試和部署操作。

設置 CI/CD 流程

  1. 創建 GitHub 儲存庫
    • GitHub 上創建一個新的儲存庫,將您的代碼推送到 GitHub 儲存庫中。
  2. 創建工作流程
    • 在 GitHub 儲存庫中,創建一個 .github/workflows 目錄,並在該目錄中創建 YAML 配置文件來定義工作流程。示例 YAML 配置文件如下:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      
      name: Build and Deploy
      
      on:
        push:
          branches:
            - main
      
      jobs:
        build:
          runs-on: ubuntu-latest
          steps:
            - name: Checkout code
              uses: actions/checkout@v3
                   
            - name: Set up .NET
              uses: actions/setup-dotnet@v3
              with:
                dotnet-version: '5.x'
                     
            - name: Restore dependencies
              run: dotnet restore
                   
            - name: Build
              run: dotnet build --no-restore
                   
            - name: Test
              run: dotnet test --no-build --verbosity normal
      
  3. 配置持續部署
    • 在 GitHub Actions 中配置部署步驟。例如,您可以使用 Azure CLI 或 Azure Web Apps 的 GitHub Action 來將應用程序部署到 Azure。
  4. 設置自動化測試
    • 在工作流程中集成測試步驟,確保每次代碼變更後自動執行測試。

4. 最佳實踐

  1. 保持小而頻繁的變更
    • 提交小的變更並頻繁合併到主分支,以便更容易進行測試和回溯。
  2. 自動化測試
    • 確保在 CI 流程中包含自動化測試,以便及早發現問題。
  3. 配置通知
    • 設置通知以便團隊成員在構建失敗或部署問題時能夠及時獲知。
  4. 管理秘密和配置
    • 使用 Azure Key Vault 或 GitHub Secrets 來管理和保護應用程序的密鑰和配置。
  5. 監控和回溯
    • 配置監控和回溯功能,以便在出現問題時能夠快速找到原因並進行修復。

5. 結合 Azure 服務

  • Azure DevOpsGitHub Actions 都可以與 Azure 服務無縫集成,例如 Azure Web AppsAzure Kubernetes Service (AKS)Azure Functions,以實現完整的 CI/CD 解決方案。

總結

配置和管理 CI/CD 流程是現代軟體開發中的關鍵組件,可以顯著提高開發效率和應用程序質量。無論是使用 Azure DevOps 還是 GitHub Actions,通過設置持續整合和持續部署流程,您可以確保代碼變更快速而可靠地交付到生產環境中,並自動化測試和部署操作。利用這些工具和最佳實踐,您可以實現更高效的開發流程和更穩定的應用程序交付。

本文章以 CC BY 4.0 授權