Azure

Azure Pipelines Multi-stage YAML パターン集|Template・Approval Gate・Conditional・Matrix・Deployment Strategy

2026-05-24
NicheeLab編集部

Multi-stage YAML パイプラインは、Build / Test / Deploy など複数のステージを 1 つの YAML で定義する CI/CD パターンで、現代的な Production CI/CD の標準形式です。 Azure Pipelines・GitHub Actions の両方でサポート、AZ-400 試験のドメイン 3 (40-45% 配点) の中核トピック。 本記事では、階層構造・Template・Approval Gate・Conditional・Matrix・Deployment Strategy を網羅的に整理します。

階層構造 (Stage / Job / Step / Task)

レベル役割
Pipeline最上位 (1 YAML 全体)azure-pipelines.yml
Stage論理ブロック (Sequential or Parallel)Build・Test・Deploy
Job並列実行単位 (Agent 1 台で 1 Job)Linux Build・Windows Build
Step順次実行単位 (Job 内)checkout・install・build・test
Task標準アクション (Microsoft / 3rd party)NodeTool・AzureWebApp・AzureCLI

本番運用では Build (並列 Job で Multi-OS Build) → Test (並列 Job) → Deploy (Sequential で Dev → Stage → Prod) という Stage 設計が典型的。

基本的な Multi-stage YAML 例

trigger:
  branches:
    include:
      - main

stages:
  - stage: Build
    jobs:
      - job: BuildJob
        pool:
          vmImage: ubuntu-latest
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: '20.x'
          - script: npm install
          - script: npm run build
          - publish: dist
            artifact: webapp

  - stage: DeployDev
    dependsOn: Build
    condition: succeeded()
    jobs:
      - deployment: DeployToDev
        environment: dev
        strategy:
          runOnce:
            deploy:
              steps:
                - download: current
                  artifact: webapp
                - task: AzureWebApp@1
                  inputs:
                    azureSubscription: 'AzureServiceConnection'
                    appName: 'myapp-dev'

  - stage: DeployProd
    dependsOn: DeployDev
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
    jobs:
      - deployment: DeployToProd
        environment: prod  # Approval Gate 設定済み
        strategy:
          runOnce:
            deploy:
              steps:
                - download: current
                  artifact: webapp
                - task: AzureWebApp@1
                  inputs:
                    azureSubscription: 'AzureServiceConnection'
                    appName: 'myapp-prod'

Template でモジュール化

Template は YAML パイプラインの再利用可能コンポーネント。

4 種類の Template

Template 種類用途
Stage TemplateStage 全体の再利用 (標準ビルドステージ)
Job TemplateJob レベルの再利用 (標準テストジョブ)
Step TemplateStep 列の再利用 (NuGet install + Build)
Variable Template環境変数セットの再利用

Step Template 例

# templates/build-node.yml
parameters:
  - name: nodeVersion
    type: string
    default: '20.x'
  - name: workingDirectory
    type: string

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: ${{ parameters.nodeVersion }}
  - script: npm install
    workingDirectory: ${{ parameters.workingDirectory }}
  - script: npm run build
    workingDirectory: ${{ parameters.workingDirectory }}

Template 呼び出し

steps:
  - template: templates/build-node.yml
    parameters:
      nodeVersion: '20.x'
      workingDirectory: 'frontend'

エンタープライズでは 10-20 個の標準 Template で 100+ Pipeline を統合管理、メンテナンスコストが劇的に削減。

Approval Gate と Manual Validation

Azure Pipelines 設定

  1. Environment 作成 (例: 'prod')
  2. Environment の Approvals and Checks で Approvers 指定 (1-3 人の承認者必須)
  3. Pipeline の Stage で environment: prod を参照
  4. Stage 実行時に Approver にメール通知・Azure DevOps UI で承認待ち
  5. 承認後に Deploy 実行

GitHub Actions 設定

  1. Repository Settings → Environments → 'prod' 作成
  2. Required Reviewers 指定
  3. Workflow Job の environment: prod 参照

代表的な Gate 設定

  • Production: 2 人の承認 (CISO + Engineering Lead) + 業務時間のみ (Time Window) + Azure Monitor アラート Quiet (直前 1 時間)
  • DR Site: 1 人承認
  • Dev / Stage: 自動デプロイ (Approval なし)

Conditional 実行と Variables

主要テクニック

  1. Conditions: condition 句で Stage / Job / Step を条件付き実行
  2. Expressions: $[] で Runtime 評価、${{ }} で Compile 時評価
  3. Variables (Pipeline-defined): variables: 句で定義
  4. Variable Groups: Azure DevOps Library で集中管理 (環境別 Connection String 等)
  5. Output Variables: Job 間で値受け渡し
  6. Conditional Variables: 環境別変数値
  7. Runtime Parameters: Pipeline 実行時にユーザーが選択

例: main ブランチ時のみ Deploy

condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))

例: Runtime Parameters

parameters:
  - name: deployTarget
    displayName: Deploy Target
    type: string
    default: 'all'
    values:
      - 'all'
      - 'us-only'
      - 'jp-only'

stages:
  - stage: DeployUS
    condition: in(${{ parameters.deployTarget }}, 'all', 'us-only')
    # ...
  - stage: DeployJP
    condition: in(${{ parameters.deployTarget }}, 'all', 'jp-only')
    # ...

Matrix Strategy

複数の組み合わせ (OS × Runtime バージョン × Configuration) を並列実行する機能。

Azure Pipelines Matrix

jobs:
  - job: Build
    strategy:
      matrix:
        Debug_x86:
          configuration: Debug
          platform: x86
        Debug_x64:
          configuration: Debug
          platform: x64
        Release_x86:
          configuration: Release
          platform: x86
        Release_x64:
          configuration: Release
          platform: x64
      maxParallel: 4
    steps:
      - script: msbuild /p:Configuration=$(configuration) /p:Platform=$(platform)

代表的なユースケース

  • クロスプラットフォーム OSS テスト (Node.js Library を 3 OS × 3 バージョン = 9 並列・10 分 → 1.5 分)
  • Container Multi-arch Build (amd64・arm64・arm/v7 並列)
  • Visual Studio C++ multi-config Build
  • AWS / Azure / GCP の Multi-cloud Deploy

Deployment Strategy

Strategy動作適用シーン
RunOnce1 回のデプロイで完了シンプル本番デプロイ (最も一般的)
Rolling順次インスタンスを更新VM Scale Set・段階的リリース
Canary少数インスタンスで先行公開新機能の限定テスト
Blue-Green2 環境を切り替えApp Service Deployment Slot・瞬時 Rollback

Canary Strategy 例

jobs:
  - deployment: DeployCanary
    environment: prod
    strategy:
      canary:
        increments: [10, 30, 60, 100]  # 段階的トラフィックシフト
        preDeploy:
          steps:
            - script: echo "Pre-deploy check"
        deploy:
          steps:
            - task: KubernetesManifest@1
              inputs:
                action: deploy
                strategy: canary
                percentage: $(strategy.increment)
        postRouteTraffic:
          steps:
            - script: ./scripts/verify-canary.sh
        on:
          failure:
            steps:
              - script: ./scripts/rollback.sh
          success:
            steps:
              - script: echo "Canary success"

代表的な使い分け

  • シンプル Web アプリ → RunOnce + Deployment Slot Swap
  • ステートフル VM Scale Set → Rolling
  • Microservices リスク管理 → Canary (1% → 10% → 50% → 100%)
  • ミッションクリティカル → Blue-Green (Slot 切替で瞬時 Rollback)

Variable Groups と Key Vault 統合

Variable Groups: 複数 Pipeline 間で共有する変数セット (Azure DevOps Library で管理)。

Key Vault 連携

  • Variable Group の『Link secrets from an Azure key vault』を有効化
  • Azure Key Vault の Secret を直接マッピング
  • Secret 値が Azure DevOps を経由せず、Pipeline 実行時に Key Vault から動的取得
  • Secret ローテーション時も Pipeline 修正不要

variables:
  - group: KeyVaultGroup  # Key Vault Reference 設定済み

jobs:
  - job: Deploy
    steps:
      - script: |
          echo "Connecting to DB..."
        env:
          DB_CONNECTION_STRING: $(DB_CONNECTION_STRING)

Output Variables (Job 間値受け渡し)

jobs:
  - job: JobA
    steps:
      - script: |
          echo "##vso[task.setvariable variable=buildNumber;isOutput=true]20260524-001"
        name: setBuildNumber

  - job: JobB
    dependsOn: JobA
    variables:
      buildNum: $[ dependencies.JobA.outputs['setBuildNumber.buildNumber'] ]
    steps:
      - script: echo "Build Number from Job A: $(buildNum)"

運用ベストプラクティス

  1. Build → Test → Deploy の標準 Stage 構造
  2. Pipeline Templates で組織共通ロジック集中管理
  3. Variable Groups + Key Vault 統合で Secret 管理
  4. Environment + Approval Gate で本番リリース安全化
  5. Workload Identity Federation で Secret 不要認証
  6. Matrix Strategy で CI 時間並列短縮
  7. Canary or Blue-Green で本番リリースリスク管理
  8. Conditional Execution で環境別動作制御
  9. Runtime Parameters でデプロイ柔軟性
  10. Pipeline as Code を Git でバージョン管理

関連認定試験

よくある質問

Multi-stage YAML パイプラインとは?

Multi-stage YAML パイプラインは、Build / Test / Deploy など複数のステージを 1 つの YAML ファイルで定義し、ステージ間の依存関係・条件分岐・Approval Gate を構成する CI/CD パターン。Azure Pipelines・GitHub Actions の両方でサポート、現代的な Production CI/CD の標準形式。代表的な構造: 1) Build Stage (Source からビルド + Artifact 生成)、2) Test Stage (Unit Test・Integration Test・Security Scan)、3) Deploy to Dev Stage (開発環境自動デプロイ)、4) Deploy to Stage Stage (Manual Approval + ステージング環境デプロイ)、5) Deploy to Prod Stage (Manual Approval + 本番環境デプロイ)。Environment 機能で各 Stage に Approval Gate・Branch Restriction・Gates (Azure Monitor Alert チェック等) を構成可能、AZ-400 試験のドメイン 3 (40-45% 配点) の中核トピックです。

Stage / Job / Step / Task の階層構造は?

Multi-stage YAML の階層構造 (上位 → 下位): 1) Pipeline (最上位・1 つの YAML ファイル全体)、2) Stage (論理ブロック・Build / Test / Deploy・Stage 間は依存関係 + Approval)、3) Job (並列実行単位・Agent 1 台で 1 Job・複数 OS / 言語並列ビルド)、4) Step (順次実行単位・Job 内で順番に実行)、5) Task (Microsoft / 3rd party 提供の標準アクション・Use 句または uses: 句で参照)。例: 5 Stage × 2 Job × 10 Step = 1 Pipeline で 100 Step が動作。Stage 間は Sequential (順次) または Parallel (並列・dependsOn 句なし) で構成、Job 間は Parallel が標準。本番運用では Build (並列 Job で Multi-OS Build) → Test (並列 Job で Unit・Integration・Security 同時実行) → Deploy (Sequential で Dev → Stage → Prod) という Stage 設計が典型的です。

Template でモジュール化するには?

Template は YAML パイプラインの再利用可能コンポーネント、複数 Pipeline で共通ロジックを集中管理。3 種類: 1) Stage Template (Stage 全体の再利用・標準ビルドステージ)、2) Job Template (Job レベルの再利用・標準テストジョブ)、3) Step Template (Step 列の再利用・NuGet install + Build)、4) Variable Template (環境変数セットの再利用)。Template ファイルは別 YAML として保管 (templates/ ディレクトリ)、parameters で外部から値受け取り。代表的なパターン: 1) 組織標準の Build → Test → Scan → Deploy Stage を Template 化、2) Reusable Workflow (GitHub Actions) で Repository 横断テンプレート (org/.github リポジトリに集中保管)、3) Azure Pipelines の Resources で別 Repository の Template 参照。エンタープライズでは 10-20 個の標準 Template で 100+ Pipeline を統合管理、メンテナンスコストが劇的に削減されます。

Approval Gate と Manual Validation の設定は?

本番デプロイ前の Approval Gate は Multi-stage Pipeline の重要セキュリティ機能。Azure Pipelines 設定: 1) Environment 作成 (例: 'prod')、2) Environment の Approvals and Checks で Approvers 指定 (1-3 人の承認者必須)、3) Pipeline の Stage で environment: prod を参照、4) Stage 実行時に Approver にメール通知・Azure DevOps UI で承認待ち、5) 承認後に Deploy 実行。GitHub Actions 設定: Repository Settings → Environments → 'prod' 作成 → Required Reviewers 指定、Workflow Job の environment: prod 参照で同様動作。Manual Validation Task で承認者へのカスタムメッセージ + 質問機能も。代表的な Gate 設定: 1) Production: 2 人の承認 (CISO + Engineering Lead) + 業務時間のみ (Time Window) + Azure Monitor アラート Quiet (直前 1 時間)、2) DR Site: 1 人承認、3) Dev / Stage: 自動デプロイ (Approval なし)。本番リリースの安全性を劇的に向上させる必須機能です。

Conditional 実行と Variables の使い方は?

Multi-stage YAML の動的制御テクニック: 1) Conditions: condition 句で Stage / Job / Step を条件付き実行 (例: condition: eq(variables['Build.SourceBranch'], 'refs/heads/main') で main ブランチ時のみ Deploy)、2) Expressions: $[] で Runtime 評価、${'

#x27;}{{}} で Compile 時評価、3) Variables (Pipeline-defined): variables: 句で定義、すべての Stage で参照可能、4) Variable Groups: Azure DevOps Library で集中管理する変数セット (環境別 Connection String 等)、5) Output Variables: Job 間で値受け渡し (taskOutputName と dependencies.JobA.outputs)、6) Conditional Variables: ${'
#x27;}{{ if eq(parameters.env, 'prod') }} で環境別変数値、7) Runtime Parameters: Pipeline 実行時にユーザーが選択するパラメータ (Deploy Region 選択等)。代表例: parameters.deployTarget が 'all' か 'us-only' かで Deploy Stage の Region Loop を制御。Conditional + Variables の組み合わせで 1 Pipeline で複数環境・複数シナリオに対応可能、メンテナンス工数を大幅削減できます。

Matrix Strategy の活用は?

Matrix Strategy は複数の組み合わせ (OS × Runtime バージョン × Configuration) を並列実行する機能。GitHub Actions: strategy.matrix で配列定義 (例: os: [ubuntu-latest, windows-latest, macos-latest] と node: [18, 20, 22] で 3 × 3 = 9 並列ジョブ)、Azure Pipelines: strategy.matrix で複数構成 (configuration: { 'Debug-x86': { cfg: 'Debug', plt: 'x86' }, ... }) で並列実行。代表的なユースケース: 1) クロスプラットフォーム OSS テスト (Node.js Library を 3 OS × 3 バージョン = 9 環境で並列テスト・10 分 → 並列で 1.5 分)、2) Container Multi-arch Build (amd64・arm64・arm/v7 を並列ビルド)、3) Visual Studio C++ multi-config Build (Debug-x86・Debug-x64・Release-x86・Release-x64 を並列)、4) AWS / Azure / GCP の Multi-cloud Deploy (同一コードを 3 環境並列デプロイ)。Matrix Build で CI 時間が劇的短縮、開発生産性に直結する重要機能です。

Deployment Strategy の種類は?

Azure Pipelines の Deployment Job で利用可能な Strategy: 1) RunOnce (1 回のデプロイで完了・シンプル本番デプロイ・最も一般的)、2) Rolling (順次インスタンスを更新・VM Scale Set・段階的リリース・MaxParallel と HealthOption で並列度制御)、3) Canary (少数インスタンスで先行公開・preDeploy / deploy / postRouteTraffic / on: { success / failure } フェーズで段階的トラフィックシフト・新機能の限定テスト)、4) Blue-Green (2 環境を切り替えてデプロイ・App Service Deployment Slot・トラフィック切替で瞬時 Rollback)。代表的な使い分け: 1) シンプル Web アプリ → RunOnce + Deployment Slot Swap、2) ステートフル VM Scale Set → Rolling、3) Microservices リスク管理 → Canary (1% → 10% → 50% → 100% で段階拡大)、4) ミッションクリティカル → Blue-Green (Slot 切替で瞬時 Rollback)。本番デプロイ戦略は業務クリティカリティで選定、Canary + Application Insights による自動 Rollback が現代的なベストプラクティスです。

関連認定試験は?

AZ-400 (DevOps Engineer Expert) のドメイン 3 (Build and Release Pipelines 40-45% 配点) で Multi-stage YAML が深く問われる本領域の本命認定。Pipeline Templates・Variable Groups・Environment + Approval Gate・Deployment Strategy・Matrix Strategy・Conditional Execution すべてが出題。AZ-204 (Developer Associate、2026-07 リタイア注意) で開発者視点での CI/CD、AZ-104 (Administrator) で基礎、AZ-305 (Solutions Architect Expert) でアーキテクト視点での DevOps 戦略。Azure DevOps Engineer の中核スキルで、本番運用での Pipeline 設計を担うエンジニアにとって必須スキルです。

関連記事・技術深掘り

Azure Pipelines YAML 完全ガイド|Stages/Jobs/Steps・Templates・Variable Groups・Approval Gate【2026 年版】

Azure Pipelines YAML パイプラインの完全ガイド。基本構造 (Stages/Jobs/Steps)・Pipeline Templates・Variable Groups と Key Vault 統合・Environments と Approval Gate・Service Connections と Workload Identity Federation・関連認定試験 (AZ-400 / AZ-204 / AZ-305) を日本語で網羅。実装パターン集付き。

Azure DevOps エンジニア キャリアロードマップ|AZ-104 → AZ-400 → SC-100 シニア DevOps への道【2026 年版】

Azure DevOps Engineer になるための認定取得ロードマップ完全版。AZ-900 → AZ-104 → AZ-400 の王道ルート、GitHub と Azure DevOps の両方を扱う AZ-400 の構成、Kubernetes 認定 (CKA / CKAD / CKS) との二刀流、IaC (Bicep / Terraform) 戦略、年収レンジまで日本語で網羅。

Azure Bicep チュートリアル|ARM 後継 IaC の基本構文・モジュール化・What-If・CI/CD 統合【2026 年版】

Azure 純正 IaC ツール Bicep の完全チュートリアル。ARM JSON との違い・基本構文 (param/var/resource/module/output)・モジュール化ベストプラクティス・What-If デプロイ・GitHub Actions / Azure Pipelines 統合・ARM からの移行手順・関連認定試験 (AZ-104 / AZ-204 / AZ-400 / AZ-305) を日本語で網羅。

AZ-104 vs AZ-204 完全比較|Microsoft Azure Administrator vs Developer Associate の違いと選び方【2026 年版】

Microsoft Azure の 2 大 Associate 認定 AZ-104 (Administrator) と AZ-204 (Developer) を完全比較。対象ロール・出題範囲・難易度・学習時間・受験料・キャリアパスを表形式で整理。AZ-204 2026 年 7 月リタイア後の判断材料、両方取る価値、次の認定への進路まで日本語で網羅。

本記事の技術情報は Azure Pipelines YAML Schema Documentation に基づいています。 本記事は Microsoft Corporation の公式商品ではなく、いかなる提携・後援関係もありません。 Microsoft、Azure、Azure DevOps、GitHub は Microsoft group of companies の商標です。 情報は 2026 年 5 月 24 日時点の公式公開資料に基づきます。最新情報は必ず公式ページをご確認ください。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

Azure 試験対策ページを見る
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Azure

AZ-900 完全ガイド|Microsoft Azure Fundamentals 出題範囲・学習リソース・合格戦略

Microsoft Azure Fundamentals (AZ-900) の 2026 年 1 月 14 日改訂版に対...

Azure

Azure 認定資格ロードマップ 2026 完全版|全 26 試験の体系と大型再編 (AI-901/AI-103/SC-500)

Microsoft Azure 認定資格 全 26 試験 (現行 23 + 退役 3) の 2026 年版ロードマップ。...

Azure

AI-901 完全ガイド|Azure AI Fundamentals 新試験

Microsoft Certified: Azure AI Fundamentals (AI-901) の出題範囲・Mi...

Azure

Microsoft Entra ID 入門|旧 Azure AD から学ぶ ID 管理 (AZ-900/SC-900/AZ-104 必須知識)

Microsoft Entra ID (旧 Azure Active Directory) の入門解説。2023 年 7...

Azure

DP-900 完全ガイド|Azure Data Fundamentals 出題範囲・学習リソース・合格戦略

Microsoft Azure Data Fundamentals (DP-900) の完全ガイド。4 ドメインの出題範...

Azureの記事一覧 (103件)
© 2026 NicheeLab All rights reserved.