mcpField
S
sprint-254-features

sprint-254-features

github.com/josiahsiegelクラウド・DevOps59153 回インストール19 週間前に更新
リポジトリ

sprint-254-features について

Azure DevOps の更新をまとめたリファレンススキルで、パイプラインのステージ、ホストイメージ、セキュリティ、GitHub 連携、エージェント機能を扱います。パイプラインや関連ワークフローを保守する担当者向けです。

主な機能

  1. 01パイプライン式とステージ変数
  2. 02ステージ依存関係の可視化
  3. 03ホストイメージの変更と移行
  4. 04GitHub の作業項目と PR の連携
  5. 05セキュリティと認証の更新
  6. 06Azure Pipelines Agent v4 の情報

活用シーン

  1. 01新しいイメージに合わせた YAML 更新
  2. 02ステージ依存関係の確認
  3. 03OAuth から Entra ID への移行計画
  4. 04作業項目を使った GitHub Copilot の利用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/josiahsiegel/claude-plugin-marketplace --skill sprint-254-features

インストール後、Claude Code で/sprint-254-featuresを入力して読み込まれたか確認します。

詳細

🚨 重要なガイドライン

Windows のファイルパス要件

必須:Windows ではファイルパスに必ずバックスラッシュを使用してください

Windows で Edit ツールまたは Write ツールを使用する場合、ファイルパスにはスラッシュ(/)ではなく、バックスラッシュ(\)を使用する必要があります。

例:

  • ❌ 誤り:D:/repos/project/file.tsx
  • ✅ 正しい:D:\repos\project\file.tsx

これは次に適用されます。

  • Edit ツールの file_path パラメーター
  • Write ツールの file_path パラメーター
  • Windows システムでのすべてのファイル操作
ドキュメントのガイドライン

ユーザーから明示的に依頼されない限り、新しいドキュメントファイルを作成しないでください。

  • 優先事項:新しいドキュメントを作成するのではなく、既存の README.md ファイルを更新してください
  • リポジトリの整理:ユーザーから別途依頼されない限り、リポジトリのルートは README.md のみとし、整理された状態を保ってください
  • スタイル:ドキュメントは簡潔で直接的かつ専門的なものとし、AI が生成したような文体は避けてください
  • ユーザーの希望:ユーザーからドキュメントの作成を明確に依頼された場合にのみ、追加の .md ファイルを作成してください

Azure DevOps 2025 の最新機能(スプリント 254~262)

新しい式関数(スプリント 248)

iif() - 三項条件演算子
# Syntax: iif(condition, valueIfTrue, valueIfFalse)

variables:
  environment: 'production'
  # Use iif for conditional values
  instanceCount: ${{ iif(eq(variables.environment, 'production'), 10, 2) }}
  deploymentSlot: ${{ iif(eq(variables.environment, 'production'), 'production', 'staging') }}

steps:
- script: echo "Deploying ${{ variables.instanceCount }} instances to ${{ variables.deploymentSlot }}"
trim() - 空白の削除
parameters:
- name: branchName
  type: string
  default: ' feature/my-branch '

variables:
  # Remove leading/trailing whitespace
  cleanBranch: ${{ trim(parameters.branchName) }}
  # Result: 'feature/my-branch' (no spaces)

新しい定義済み変数(スプリント 253)

Build.StageRequestedBy

ステージの実行を要求したユーザー:

stages:
- stage: Deploy
  jobs:
  - job: DeployJob
    steps:
    - script: |
        echo "Stage requested by: $(Build.StageRequestedBy)"
        echo "Stage requester ID: $(Build.StageRequestedById)"
      displayName: 'Log stage requester'

    # Use for approval notifications
    - task: SendEmail@1
      inputs:
        to: '[email protected]'
        subject: 'Deployment requested by $(Build.StageRequestedBy)'

ステージ依存関係の可視化(スプリント 254)

パイプライン UI でステージを展開すると、ステージの依存関係を確認できます。

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - script: echo "Building..."

- stage: Test
  dependsOn: Build  # Shown visually when expanded
  jobs:
  - job: TestJob
    steps:
    - script: echo "Testing..."

- stage: Deploy_USEast
  dependsOn: Test
  jobs:
  - job: DeployJob
    steps:
    - script: echo "Deploying to US East..."

- stage: Deploy_EUWest
  dependsOn: Test  # Parallel with Deploy_USEast - visualized clearly
  jobs:
  - job: DeployJob
    steps:
    - script: echo "Deploying to EU West..."

メリット:

  • UI 上で依存関係グラフを表示
  • 複雑なパイプラインのデバッグが容易
  • 複数リージョンへのデプロイパターンを明確化
  • 並列ステージと順次ステージを識別

新しい OS イメージ

Ubuntu-24.04(一般提供)
pool:
  vmImage: 'ubuntu-24.04'  # Latest LTS - Recommended
  # OR use ubuntu-latest (will map to 24.04 soon)
  # vmImage: 'ubuntu-latest'

steps:
- script: |
    lsb_release -a
    # Ubuntu 24.04 LTS (Noble Numbat)

主な情報:

  • Ubuntu 24.04 が一般提供されました
  • ubuntu-latest は間もなく ubuntu-24.04 に対応します(現在は ubuntu-22.04)
  • Ubuntu 20.04 は 2025 年 4 月 30 日に完全に削除されました
Windows Server 2025(2025 年 6 月提供予定)
pool:
  vmImage: 'windows-2025'  # GA: June 16, 2025

steps:
- pwsh: |
    Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion

主な情報:

  • 一般提供開始日:2025 年 6 月 16 日
  • windows-latest は 2025 年 9 月 2 日から windows-2025 に対応します
  • Windows Server 2019 の延長サポートは 2025 年 12 月 31 日まで
macOS-15 Sequoia(提供中)
pool:
  vmImage: 'macOS-15'  # Sequoia

steps:
- script: |
    sw_vers
    # macOS 15.x (Sequoia)

主な情報:

  • macOS 13 Ventura の非推奨化は 2025 年 9 月 1 日に開始
  • macOS 13 の廃止は 2025 年 12 月 4 日に予定
  • Apple Silicon(ARM64)サポートはプレビュー中
⚠️ 非推奨および廃止されたイメージ

完全に削除済み(2025 年):

  • Ubuntu 20.04 - 2025 年 4 月 30 日に削除
  • .NET 6 - 2025 年 8 月 1 日に Windows および Ubuntu のイメージから削除

延長サポート:

  • Windows Server 2019 - 2025 年 12 月 31 日まで延長
    • 非推奨化の開始:2025 年 6 月 1 日
    • ブラウンアウト期間:2025 年 6 月 3~24 日
    • 最終削除:2025 年 12 月 31 日

今後の非推奨化:

  • macOS 13 Ventura - 非推奨化:2025 年 9 月 1 日、廃止:2025 年 12 月 4 日

移行に関する推奨事項:

# Ubuntu Migration
# OLD (Removed)
pool:
  vmImage: 'ubuntu-20.04'

# NEW (Recommended)
pool:
  vmImage: 'ubuntu-24.04'  # Best: explicit version
  # OR
  vmImage: 'ubuntu-latest'  # Will map to 24.04 soon

# Windows Migration
# OLD (Being deprecated)
pool:
  vmImage: 'windows-2019'

# NEW (Recommended)
pool:
  vmImage: 'windows-2022'  # Current stable
  # OR wait for
  vmImage: 'windows-2025'  # GA June 2025

GitHub 連携の改善

プルリクエストの自動リンク

作業項目にリンクされた GitHub ブランチでは、プルリクエストも自動的にリンクされます。

# When PR is created for branch linked to work item,
# PR automatically appears in work item's Development section

trigger:
  branches:
    include:
    - feature/*
    - users/*

# Work item auto-linking based on branch name pattern
# AB#12345 in commits auto-links to work item 12345
「ビルドに統合」リンク

GitHub リポジトリでは、プルリクエストがどのビルドに統合されたかを確認できます。

pr:
  branches:
    include:
    - main
    - develop

# After PR merged, work item shows:
# "Integrated in build: Pipeline Name #123"
# Direct link to build that deployed the change

ステージレベルの変数

stages:
- stage: Build
  variables:
    buildConfiguration: 'Release'
    platform: 'x64'
  jobs:
  - job: BuildJob
    steps:
    - script: echo "Building $(buildConfiguration) $(platform)"

- stage: Deploy
  variables:
    environment: 'production'
    region: 'eastus'
  jobs:
  - job: DeployJob
    steps:
    - script: |
        echo "Stage: $(System.StageName)"
        echo "Requested by: $(Build.StageRequestedBy)"
        echo "Deploying to $(environment) in $(region)"

実践例

新機能を使った複数リージョンへのデプロイ
parameters:
- name: deployToProd
  type: boolean
  default: false

variables:
  # Use iif for conditional values
  targetEnvironment: ${{ iif(parameters.deployToProd, 'production', 'staging') }}

stages:
- stage: Build
  jobs:
  - job: BuildApp
    pool:
      vmImage: 'ubuntu-24.04'  # New image
    steps:
    - script: npm run build

- stage: Test
  dependsOn: Build
  jobs:
  - job: RunTests
    pool:
      vmImage: 'ubuntu-24.04'
    steps:
    - script: npm test

- stage: Deploy_USEast
  dependsOn: Test
  condition: succeeded()
  variables:
    region: 'eastus'
  jobs:
  - deployment: DeployToUSEast
    environment: ${{ variables.targetEnvironment }}
    pool:
      vmImage: 'ubuntu-24.04'
    strategy:
      runOnce:
        deploy:
          steps:
          - script: |
              echo "Deploying to $(region)"
              echo "Requested by: $(Build.StageRequestedBy)"

- stage: Deploy_EUWest
  dependsOn: Test  # Parallel with Deploy_USEast
  condition: succeeded()
  variables:
    region: 'westeurope'
  jobs:
  - deployment: DeployToEUWest
    environment: ${{ variables.targetEnvironment }}
    pool:
      vmImage: 'ubuntu-24.04'
    strategy:
      runOnce:
        deploy:
          steps:
          - script: |
              echo "Deploying to $(region)"
              echo "Requested by: $(Build.StageRequestedBy)"

# Stage dependencies visualized clearly in UI (Sprint 254)

継続的アクセス評価(スプリント 260 - 2025 年 8 月)

CAE によるセキュリティの強化

Azure DevOps は Continuous Access Evaluation(CAE) に対応しました。これにより、Microsoft Entra ID を通じて条件付きアクセス ポリシーをほぼリアルタイムで適用できます。

主なメリット:

  • 重大なイベント発生時にアクセスを即時に取り消します
  • トークンの有効期限切れを待つ必要がありません
  • セキュリティ態勢を強化します

アクセス取り消しのトリガー:

  • ユーザーアカウントの無効化
  • パスワードのリセット
  • 場所または IP アドレスの変更
  • リスク検出イベント
  • ポリシー違反

シナリオの例:

# Your pipeline with CAE enabled automatically
stages:
  - stage: Production
    jobs:
      - deployment: Deploy
        environment: 'production'
        pool:
          vmImage: 'ubuntu-24.04'
        strategy:
          runOnce:
            deploy:
              steps:
                - script: echo "Deploying..."
                  # If user credentials are revoked mid-deployment,
                  # CAE will instantly terminate access

実装:

  • 一般提供開始:2025 年 8 月
  • すべてのお客様に段階的に展開
  • 設定は不要(すべての Azure DevOps 組織で自動的に有効)
  • Microsoft Entra ID の条件付きアクセス ポリシーと連携

セキュリティの向上:

  • セキュリティイベントに即座に対応
  • 攻撃可能な時間を数時間/数日から数秒に短縮
  • 既存のセキュリティ機能(Key Vault、ブランチ ポリシーなど)を補完

OAuth アプリの非推奨化(2025 年 4 月)

重要な変更:

  • Azure DevOps OAuth アプリの新規登録は、2025 年 4 月以降サポートされません
  • Azure DevOps OAuth プラットフォームの廃止に向けた第一段階です
  • 既存の OAuth アプリは引き続き動作します
  • Microsoft Entra ID 認証への移行を計画してください

移行に関する推奨事項:

# Use service connections with Microsoft Entra ID instead
- task: AzureCLI@2
  inputs:
    azureSubscription: 'service-connection'  # Uses Managed Identity or Service Principal
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    addSpnToEnvironment: true
    inlineScript: |
      az account show

SNI の要件(2025 年 4 月)

ネットワーク要件:

  • すべての受信 HTTPS 接続で Server Name Indication(SNI) が必要です
  • 適用開始日:2025 年 4 月 23 日
  • すべての Azure DevOps Services 接続に影響します

確認事項:

  • クライアントが SNI に対応していることを確認してください(最新のクライアントのほとんどは対応しています)
  • 必要に応じて、レガシー ツールやスクリプトを更新してください
  • 2025 年 4 月 23 日より前に接続をテストしてください

OAuth アプリの非推奨化(Sprint 261 - 2025 年 9 月)

重大なセキュリティ変更:

Azure DevOps では、OAuth クライアント シークレットを一度だけ表示する仕組みが適用されます。

  • 新しく生成されたクライアント シークレットは、作成時にのみ表示されます
  • Get Registration Secret API は廃止されます
  • 変更の適用日:2025 年 9 月 2 日
  • OAuth アプリの新規登録はできません

移行手順:

# Replace OAuth apps with Microsoft Entra ID authentication
# Use service connections with Managed Identity or Service Principal
- task: AzureCLI@2
  inputs:
    azureSubscription: 'entra-id-service-connection'
    scriptType: 'bash'
    addSpnToEnvironment: true
    inlineScript: |
      az account show
      # Authenticated via Entra ID

必要な対応:

  • 既存の OAuth アプリを監査する
  • Entra ID 認証への移行を計画する
  • サービス接続を使用するように CI/CD パイプラインを更新する
  • シークレットのローテーション手順を文書化する

エージェント ソフトウェア バージョン 4(2024 年 10 月 - 現在)

大規模なアップグレード:

Azure Pipelines エージェントが .NET 8 を基盤とする v3.x から v4.x にアップグレードされました。

主な改善点:

  • .NET 8 を基盤とし、パフォーマンスとセキュリティを向上
  • ARM64 を含む、プラットフォームのサポートを拡大
  • 信頼性と診断機能を改善
  • リソース管理を改善

プラットフォームのサポート:

  • Linux: Debian 11 および 12、Ubuntu 24.04、22.04、20.04(ARM64 に対応)
  • macOS: Intel および Apple Silicon(ARM64 に対応)
  • Windows: Windows Server 2019、2022、2025

ARM64 のサポート:

# Self-hosted ARM64 agent
pool:
  name: 'arm64-pool'
  demands:
    - agent.os -equals Linux
    - Agent.OSArchitecture -equals ARM64

steps:
  - script: uname -m
    displayName: 'Verify ARM64 architecture'

注: ARM64 のサポートはセルフホストエージェントで利用できます。Microsoft がホストする ARM64 macOS エージェントはプレビュー段階です。

Sprint 262 - GitHub Copilot との統合(2025 年)

AI を活用した作業項目の支援(プライベート プレビュー):

Azure Boards の作業項目を GitHub Copilot に直接連携できます。

機能:

  • 作業項目を Copilot コーディングエージェントに送信
  • AI を活用したバグ修正
  • 機能の実装を自動化
  • テストカバレッジを改善
  • ドキュメントを更新
  • 技術的負債を削減

使用パターン:

  1. Azure Boards で作業項目を作成する
  2. 説明に詳細な要件を追加する
  3. GitHub Copilot に送信する
  4. Copilot がコード変更を生成する
  5. 標準的な PR プロセスでレビューしてマージする

Pipelines との統合:

# Work items auto-link with PRs
trigger:
  branches:
    include:
    - feature/*

# Mention work item in commit
# Example: "Fix login bug AB#12345"
# Automatically links PR to work item and tracks in build

リソース

コメント