sprint-254-features について
Azure DevOps の更新をまとめたリファレンススキルで、パイプラインのステージ、ホストイメージ、セキュリティ、GitHub 連携、エージェント機能を扱います。パイプラインや関連ワークフローを保守する担当者向けです。
主な機能
- 01パイプライン式とステージ変数
- 02ステージ依存関係の可視化
- 03ホストイメージの変更と移行
- 04GitHub の作業項目と PR の連携
- 05セキュリティと認証の更新
- 06Azure Pipelines Agent v4 の情報
活用シーン
- 01新しいイメージに合わせた YAML 更新
- 02ステージ依存関係の確認
- 03OAuth から Entra ID への移行計画
- 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 を活用したバグ修正
- 機能の実装を自動化
- テストカバレッジを改善
- ドキュメントを更新
- 技術的負債を削減
使用パターン:
- Azure Boards で作業項目を作成する
- 説明に詳細な要件を追加する
- GitHub Copilot に送信する
- Copilot がコード変更を生成する
- 標準的な 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