返回首頁Azure

Azure DevOps 教學:從零開始建立 CI/CD Pipeline 完整指南

16 min 分鐘閱讀
#Azure DevOps#CI/CD#Azure Pipelines#DevOps#自動化部署#Azure Repos#Git#持續整合#持續部署#YAML Pipeline

Azure DevOps 教學:從零開始建立 CI/CD Pipeline 完整指南

前言:為什麼你需要 Azure DevOps?

「每次部署都要手動操作 2 小時,而且常常出錯。」

這是我們最常從開發團隊聽到的痛點。

Azure DevOps 就是解決這個問題的工具。它能把你的程式碼提交、測試、部署全部自動化。原本 2 小時的手動流程,可以縮短到 10 分鐘,而且零人為錯誤。

根據 DORA 研究報告,高效能的 DevOps 團隊部署頻率是低效能團隊的 208 倍,故障恢復時間快 2604 倍。

這篇教學會帶你從零開始,建立第一個 CI/CD Pipeline。

Azure DevOps 是 Azure 開發工具的核心,更多 Azure 服務請見 Azure 完整指南

插圖 1:Azure DevOps 工作流程總覽

一、Azure DevOps 是什麼?

Azure DevOps 是微軟提供的一站式開發協作平台。

它不只是一個工具,而是五個緊密整合的服務。

1.1 Azure DevOps 五大服務

Azure Repos

Git 版本控制服務。可以存放程式碼、管理分支、進行 Code Review。

類似 GitHub,但與 Azure 生態系整合更緊密。

Azure Boards

敏捷專案管理工具。支援 Scrum、Kanban 看板、Sprint 規劃。

可以追蹤 User Story、Bug、Task,還能連結到程式碼提交。

Azure Pipelines

這是 Azure DevOps 的核心。用來建立 CI/CD 自動化流程。

支援幾乎所有程式語言和平台:.NET、Java、Node.js、Python、Go、容器、Kubernetes 等。

Azure Test Plans

測試管理服務。可以建立測試案例、執行手動測試、追蹤測試結果。

適合需要嚴謹測試流程的企業專案。

Azure Artifacts

套件管理服務。可以存放 npm、NuGet、Maven、Python 套件。

當你有內部共用的程式庫時,Artifacts 很有用。

1.2 Azure DevOps Server vs Cloud

Azure DevOps 有兩種版本:

項目Azure DevOps Services(雲端)Azure DevOps Server(地端)
部署方式SaaS,微軟託管自行安裝在內部伺服器
維護微軟負責自行維護
更新自動更新手動升級
資料位置微軟資料中心自己的機房
適合對象大多數團隊有嚴格合規要求的企業

90% 以上的團隊都適合用雲端版。只有在法規要求資料必須留在內部時,才需要考慮 Server 版。

1.3 Azure DevOps 免費方案

好消息:Azure DevOps 對小團隊是免費的。

免費額度包括:

  • 5 位使用者的完整功能
  • 無限制的私有 Git 儲存庫
  • Azure Pipelines:每月 1,800 分鐘的 CI/CD 時間
  • Azure Artifacts:2 GB 儲存空間

對於新創團隊或小專案,這個免費額度通常綽綽有餘。


二、Azure Repos vs GitHub

這是很多團隊會問的問題:「我們該用 Azure Repos 還是 GitHub?」

2.1 功能比較

功能Azure ReposGitHub
Git 儲存庫
Pull Request
分支策略✓(更細緻)
Code Review
Wiki透過 Azure Wiki
Issue 追蹤透過 Azure Boards✓(GitHub Issues)
CI/CDAzure PipelinesGitHub Actions
套件管理Azure ArtifactsGitHub Packages
社群功能✓(Stars、Forks)

2.2 如何選擇?

選 Azure Repos 的情境:

  • 已經大量使用 Azure DevOps 其他服務
  • 需要與 Azure Boards 緊密整合
  • 企業內部專案,不需要開源社群功能

選 GitHub 的情境:

  • 開源專案
  • 團隊已經熟悉 GitHub
  • 想利用 GitHub 的社群生態

混合使用也可以:

很多團隊會用 GitHub 管理程式碼,但用 Azure Pipelines 做 CI/CD。這兩者整合得很好。

Azure DevOps vs AWS CodePipeline 的比較,請見 Azure vs AWS 比較


三、Azure Boards 專案管理教學

在開始寫程式碼之前,先來設定專案管理。

3.1 建立第一個專案

  1. 前往 dev.azure.com
  2. 登入你的 Microsoft 帳號
  3. 建立新組織(或選擇現有組織)
  4. 點擊「New Project」
  5. 設定專案名稱、可見性(Private/Public)
  6. 選擇工作流程範本(Agile、Scrum、CMMI)

3.2 工作項目類型

Azure Boards 的工作項目有層級關係:

Epic(史詩) 最大的工作單位,通常代表一個大功能或專案目標。

Feature(功能) Epic 底下的子項目,代表可交付的功能。

User Story / Product Backlog Item Feature 底下的細項,代表使用者需求。

Task(任務) 最小的工作單位,是開發者實際要執行的事項。

Bug 缺陷追蹤,可以連結到造成 Bug 的程式碼提交。

3.3 看板(Kanban)使用

Azure Boards 的看板功能很強大:

  • 自訂欄位:可以新增「Code Review」、「QA」等自訂狀態
  • WIP 限制:限制每個欄位最多幾張卡片,避免工作堆積
  • 泳道:用來區分不同類型的工作(例如:功能開發 vs 維護)
  • 標籤:快速篩選和分類卡片

3.4 連結程式碼與工作項目

這是 Azure DevOps 最強大的功能之一。

當你提交程式碼時,可以在 commit message 加上工作項目 ID:

git commit -m "Fix login button styling #123"

這樣做的好處:

  • 工作項目會自動連結到這個 commit
  • 可以從工作項目追蹤到相關的程式碼變更
  • PR 合併時可以自動更新工作項目狀態

四、Azure Pipelines CI/CD 設定

這是 Azure DevOps 的核心功能。讓我們來建立第一個 Pipeline。

4.1 Pipeline 基礎概念

在開始之前,先了解幾個關鍵概念:

Pipeline 整個自動化流程的定義,包含 CI 和 CD。

Stage Pipeline 中的一個階段,例如 Build、Test、Deploy。

Job Stage 中的一組任務,會在同一個 Agent 上執行。

Step / Task 最小的執行單位,例如執行一個腳本或一個指令。

Agent 執行 Pipeline 的機器。可以用微軟託管的 Agent,或自己架設。

Trigger 觸發 Pipeline 的條件,例如程式碼提交或 PR 建立。

4.2 建立第一個 CI Pipeline

我們用一個 Node.js 專案來示範。

步驟 1:進入 Pipelines

在 Azure DevOps 專案中,點擊左側的「Pipelines」→「Create Pipeline」。

步驟 2:選擇程式碼來源

選擇你的程式碼在哪裡:Azure Repos、GitHub、Bitbucket 等。

步驟 3:選擇範本

Azure DevOps 會偵測你的專案類型,提供建議範本。你也可以選「Starter pipeline」從頭開始。

步驟 4:編輯 YAML

這是一個基本的 Node.js CI Pipeline:

trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

stages:
  - stage: Build
    displayName: 'Build and Test'
    jobs:
      - job: BuildJob
        displayName: 'Build'
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: '18.x'
            displayName: 'Install Node.js'

          - script: |
              npm ci
              npm run build
            displayName: 'Install and Build'

          - script: npm test
            displayName: 'Run Tests'

          - task: PublishBuildArtifacts@1
            inputs:
              pathToPublish: 'dist'
              artifactName: 'app'
            displayName: 'Publish Artifact'

步驟 5:儲存並執行

點擊「Save and run」,Pipeline 就會開始執行。

插圖 2:Azure Pipelines YAML 結構圖

DevOps 轉型需要專業規劃 CI/CD Pipeline 只是起點,完整的 DevOps 轉型涉及流程、文化、工具的整合。 預約架構諮詢,讓我們幫你設計最佳 DevOps 架構。


五、Azure Artifacts 套件管理

當團隊有內部共用的程式庫時,Azure Artifacts 很有用。

5.1 支援的套件類型

  • npm(Node.js)
  • NuGet(.NET)
  • Maven / Gradle(Java)
  • pip(Python)
  • Universal Packages(任意二進位檔案)

5.2 建立 Feed

  1. 在 Azure DevOps 專案中,點擊「Artifacts」
  2. 點擊「Create Feed」
  3. 設定名稱和可見性
  4. 選擇上游來源(可以 Proxy npmjs.org 等公共來源)

5.3 發布套件

以 npm 為例:

# 設定 npm registry
npm config set registry https://pkgs.dev.azure.com/your-org/_packaging/your-feed/npm/registry/

# 認證
npx vsts-npm-auth -config .npmrc

# 發布
npm publish

在 Pipeline 中自動發布:

- task: Npm@1
  inputs:
    command: 'publish'
    publishRegistry: 'useFeed'
    publishFeed: 'your-project/your-feed'

六、Azure Test Plans 測試管理

對於需要嚴謹測試流程的專案,Azure Test Plans 提供完整的測試管理功能。

6.1 測試案例管理

  • 建立結構化的測試案例
  • 定義測試步驟和預期結果
  • 組織成測試套件

6.2 手動測試執行

  • 使用 Test Runner 執行測試
  • 記錄測試結果和螢幕截圖
  • 自動建立 Bug 並連結到失敗的測試

6.3 自動化測試整合

在 Pipeline 中整合自動化測試:

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: '**\*test*.dll'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

測試結果會自動顯示在 Pipeline 結果中。


七、Azure DevOps 最佳實踐

經過多年協助客戶導入 DevOps,我們整理了這些最佳實踐。

7.1 分支策略

推薦使用 GitHub FlowGit Flow

GitHub Flow(簡單版)

  • main 分支永遠是可部署的
  • 新功能從 main 建立 feature branch
  • 完成後發 PR 回 main
  • Code Review 通過後合併

Git Flow(較複雜)

  • main:生產環境程式碼
  • develop:開發整合分支
  • feature/*:功能開發
  • release/*:發布準備
  • hotfix/*:緊急修復

對大多數團隊,GitHub Flow 就夠用了。

7.2 程式碼審查流程

在 Azure Repos 設定分支策略:

  1. 進入 Repos → Branches
  2. 點擊 main 分支的「...」→「Branch policies」
  3. 啟用以下設定:
    • Require a minimum number of reviewers(至少 1 人審核)
    • Check for linked work items(必須連結工作項目)
    • Check for comment resolution(必須解決所有討論)
    • Build validation(必須通過 CI)

7.3 DevSecOps 整合

安全不應該是事後才考慮的事。把安全檢查整合到 Pipeline:

靜態程式碼分析(SAST)

- task: SonarQubePrepare@5
  inputs:
    SonarQube: 'SonarQube-Connection'
    scannerMode: 'CLI'
    configMode: 'manual'

相依套件弱點掃描

- script: npm audit --audit-level=moderate
  displayName: 'Security Audit'

容器映像掃描

- task: ContainerScan@0
  inputs:
    imageName: 'myimage:latest'

更多 DevSecOps 資安整合,請見 Azure 資安完整指南

用 Azure DevOps 部署 AI 應用,請見 Azure OpenAI 完整教學

插圖 4:DevSecOps Pipeline 整合圖

八、常見問題 FAQ

Q1:Azure DevOps 和 GitHub 該選哪個?

如果團隊已經用 GitHub 很順手,可以繼續用 GitHub + GitHub Actions。如果需要更完整的專案管理(Azure Boards)和測試管理(Test Plans),Azure DevOps 是更好的選擇。兩者也可以混合使用:GitHub 管程式碼 + Azure Pipelines 做 CI/CD。

Q2:Azure Pipelines 免費額度夠用嗎?

對小團隊通常夠用。每月 1,800 分鐘的 Microsoft-hosted agent 時間,大約可以執行 300-500 次 Pipeline(假設每次 3-6 分鐘)。如果不夠,可以自架 Self-hosted agent,完全免費。

Q3:YAML Pipeline 和 Classic Pipeline 差在哪?

YAML Pipeline 是用程式碼定義的,可以版本控制、Code Review、重複使用。Classic Pipeline 是用 GUI 設定的,比較直覺但難以版控。微軟現在推薦用 YAML Pipeline,Classic 會逐漸淘汰。

Q4:如何遷移現有的 Jenkins Pipeline 到 Azure Pipelines?

Azure DevOps 有 Jenkins 整合插件,可以觸發 Azure Pipelines。完整遷移的話,需要把 Jenkinsfile 改寫成 azure-pipelines.yml。語法不同,但概念類似。

Q5:Azure DevOps 支援哪些雲端部署目標?

支援所有主流雲端:Azure、AWS、GCP,以及任何可以透過 SSH 或 API 存取的環境。內建的 Task 以 Azure 為主,但透過 Marketplace 可以找到 AWS、GCP 的擴充。

Q6:如何監控 Pipeline 的執行狀況?

Azure DevOps 內建執行歷史和分析。可以設定 Pipeline 失敗時發送 Email 或 Teams 通知。進階監控可以整合 Azure Monitor 或第三方工具。如果你想了解 Azure 各服務的費用,包括 DevOps 相關資源的計價,請見 Azure 費用計算完整指南


九、結論與下一步

Azure DevOps 是一個功能完整的 DevOps 平台。

從程式碼管理、專案追蹤、CI/CD 自動化、到測試管理,全部在同一個平台完成。

如果你剛開始接觸 Azure DevOps,建議的學習路徑是:

  1. 建立免費帳號:在 dev.azure.com 註冊
  2. 匯入一個專案:把現有的 Git 專案匯入 Azure Repos
  3. 設定第一個 CI Pipeline:從範本開始,逐步客製化
  4. 新增測試階段:確保每次提交都有自動化測試
  5. 設定 CD Pipeline:自動部署到測試環境
  6. 加入安全掃描:整合 DevSecOps 實踐

DevOps 轉型需要協助?

如果你正在:

  • 規劃從傳統開發流程轉型到 DevOps
  • 建立 CI/CD Pipeline 但遇到瓶頸
  • 想整合 DevSecOps 但不知從何開始

預約架構設計諮詢,我們提供 DevOps 轉型的完整規劃。 從工具選型到流程設計,全程提供專業建議。


參考資料

  1. Azure DevOps 官方文件:https://learn.microsoft.com/azure/devops
  2. Azure Pipelines YAML 語法參考:https://learn.microsoft.com/azure/devops/pipelines/yaml-schema
  3. DORA State of DevOps Report:https://dora.dev
  4. Azure DevOps Marketplace:https://marketplace.visualstudio.com/azuredevops
  5. Microsoft Learn DevOps 學習路徑:https://learn.microsoft.com/training/paths/evolve-your-devops-practices

需要專業的雲端建議?

無論您正在評估雲平台、優化現有架構,或尋找節費方案,我們都能提供協助

預約免費諮詢

相關文章