| name | sprint-254-features |
| description | Azure DevOps Sprint 254-262 new features and enhancements (2025). PROACTIVELY activate for: (1) checking what is new in recent Azure DevOps sprints, (2) using new pipeline tasks introduced in Sprint 254+, (3) Azure Boards updates (delivery plans, query enhancements), (4) Azure Repos updates (branch policies, advanced security), (5) Azure Pipelines updates (1ES hosted pools, agent retirement), (6) Azure Artifacts updates (upstream sources, retention), (7) deprecation notices (TFVC, classic pipelines), (8) GitHub Advanced Security for ADO. Provides: sprint-by-sprint changelog, new feature reference, deprecation timeline, and migration notes. |
🚨 CRITICAL GUIDELINES
Windows File Path Requirements
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
Examples:
- ❌ WRONG:
D:/repos/project/file.tsx
- ✅ CORRECT:
D:\repos\project\file.tsx
This applies to:
- Edit tool file_path parameter
- Write tool file_path parameter
- All file operations on Windows systems
Documentation Guidelines
NEVER create new documentation files unless explicitly requested by the user.
- Priority: Update existing README.md files rather than creating new documentation
- Repository cleanliness: Keep repository root clean - only README.md unless user requests otherwise
- Style: Documentation should be concise, direct, and professional - avoid AI-generated tone
- User preference: Only create additional .md files when user specifically asks for documentation
Azure DevOps 2025 Latest Features (Sprints 254-262)
New Expression Functions (Sprint 248)
iif() - Ternary Conditional Operator
variables:
environment: 'production'
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() - Remove Whitespace
parameters:
- name: branchName
type: string
default: ' feature/my-branch '
variables:
cleanBranch: ${{ trim(parameters.branchName) }}
New Predefined Variables (Sprint 253)
Build.StageRequestedBy
Who requested the stage execution:
stages:
- stage: Deploy
jobs:
- job: DeployJob
steps:
- script: |
echo "Stage requested by: $(Build.StageRequestedBy)"
echo "Stage requester ID: $(Build.StageRequestedById)"
displayName: 'Log stage requester'
- task: SendEmail@1
inputs:
to: 'approvers@example.com'
subject: 'Deployment requested by $(Build.StageRequestedBy)'
Stage Dependencies Visualization (Sprint 254)
View stage dependencies when stage is expanded in pipeline UI:
stages:
- stage: Build
jobs:
- job: BuildJob
steps:
- script: echo "Building..."
- stage: Test
dependsOn: Build
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
jobs:
- job: DeployJob
steps:
- script: echo "Deploying to EU West..."
Benefits:
- Visual dependency graph in UI
- Easier debugging of complex pipelines
- Clear multi-region deployment patterns
- Identify parallel vs sequential stages
New OS Images
Ubuntu-24.04 (General Availability)
pool:
vmImage: 'ubuntu-24.04'
steps:
- script: |
lsb_release -a
Key Information:
- Ubuntu 24.04 is now generally available
ubuntu-latest will soon map to ubuntu-24.04 (currently ubuntu-22.04)
- Ubuntu 20.04 fully removed April 30, 2025
Windows Server 2025 (Coming June 2025)
pool:
vmImage: 'windows-2025'
steps:
- pwsh: |
Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion
Key Information:
- General availability: June 16, 2025
windows-latest will map to windows-2025 starting September 2, 2025
- Windows Server 2019 extended support until December 31, 2025
macOS-15 Sequoia (Available)
pool:
vmImage: 'macOS-15'
steps:
- script: |
sw_vers
Key Information:
- macOS 13 Ventura deprecation starts September 1, 2025
- macOS 13 retirement planned for December 4, 2025
- Apple Silicon (ARM64) support in preview
⚠️ Deprecated and Retired Images
Fully Removed (2025):
- Ubuntu 20.04 - Removed April 30, 2025
- .NET 6 - Removed from Windows and Ubuntu images August 1, 2025
Extended Support:
- Windows Server 2019 - Extended until December 31, 2025
- Deprecation starts: June 1, 2025
- Brownout periods: June 3-24, 2025
- Final removal: December 31, 2025
Upcoming Deprecations:
- macOS 13 Ventura - Deprecation: September 1, 2025, Retirement: December 4, 2025
Migration Recommendations:
pool:
vmImage: 'ubuntu-20.04'
pool:
vmImage: 'ubuntu-24.04'
vmImage: 'ubuntu-latest'
pool:
vmImage: 'windows-2019'
pool:
vmImage: 'windows-2022'
vmImage: 'windows-2025'
GitHub Integration Improvements
Auto-linked Pull Requests
GitHub branches linked to work items automatically link PRs:
trigger:
branches:
include:
- feature/*
- users/*
"Integrated in build" Links
GitHub repos show which build integrated the PR:
pr:
branches:
include:
- main
- develop
Stage-Level Variables
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)"
Practical Examples
Multi-Region Deployment with New Features
parameters:
- name: deployToProd
type: boolean
default: false
variables:
targetEnvironment: ${{ iif(parameters.deployToProd, 'production', 'staging') }}
stages:
- stage: Build
jobs:
- job: BuildApp
pool:
vmImage: 'ubuntu-24.04'
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:
Continuous Access Evaluation (Sprint 260 - August 2025)
Enhanced Security with CAE
Azure DevOps now supports Continuous Access Evaluation (CAE), enabling near real-time enforcement of Conditional Access policies through Microsoft Entra ID.
Key Benefits:
- Instant access revocation on critical events
- No waiting for token expiration
- Enhanced security posture
Triggers for Access Revocation:
- User account disabled
- Password reset
- Location or IP address changes
- Risk detection events
- Policy violations
Example Scenario:
stages:
- stage: Production
jobs:
- deployment: Deploy
environment: 'production'
pool:
vmImage: 'ubuntu-24.04'
strategy:
runOnce:
deploy:
steps:
- script: echo "Deploying..."
Implementation:
- General availability: August 2025
- Phased rollout to all customers
- No configuration required (automatic for all Azure DevOps orgs)
- Works with Microsoft Entra ID Conditional Access policies
Security Improvements:
- Immediate response to security events
- Reduces attack window from hours/days to seconds
- Complements existing security features (Key Vault, branch policies, etc.)
OAuth Apps Deprecation (April 2025)
Important Change:
- Azure DevOps no longer supports new registrations of Azure DevOps OAuth apps (effective April 2025)
- First step towards retiring the Azure DevOps OAuth platform
- Existing OAuth apps continue to work
- Plan migration to Microsoft Entra ID authentication
Migration Recommendations:
- task: AzureCLI@2
inputs:
azureSubscription: 'service-connection'
scriptType: 'bash'
scriptLocation: 'inlineScript'
addSpnToEnvironment: true
inlineScript: |
az account show
SNI Requirement (April 2025)
Network Requirement:
- Server Name Indication (SNI) required on all incoming HTTPS connections
- Effective: April 23, 2025
- Affects all Azure DevOps Services connections
What to Check:
- Ensure clients support SNI (most modern clients do)
- Update legacy tools/scripts if needed
- Test connectivity before April 23, 2025
OAuth Apps Deprecation (Sprint 261 - September 2025)
Critical Security Change:
Azure DevOps is enforcing one-time visibility for OAuth client secrets:
- Newly generated client secrets displayed only once at creation
- Get Registration Secret API will be retired
- Change effective: September 2, 2025
- No new OAuth app registrations allowed
Migration Path:
- task: AzureCLI@2
inputs:
azureSubscription: 'entra-id-service-connection'
scriptType: 'bash'
addSpnToEnvironment: true
inlineScript: |
az account show
Action Required:
- Audit existing OAuth apps
- Plan migration to Entra ID authentication
- Update CI/CD pipelines to use service connections
- Document secret rotation procedures
Agent Software Version 4 (October 2024 - Current)
Major Upgrade:
The Azure Pipelines agent has been upgraded from v3.x to v4.x, powered by .NET 8:
Key Improvements:
- Built on .NET 8 for better performance and security
- Extended platform support including ARM64
- Improved reliability and diagnostics
- Better resource management
Platform Support:
- Linux: Debian 11 & 12, Ubuntu 24.04, 22.04, 20.04 (ARM64 supported)
- macOS: Intel and Apple Silicon (ARM64 supported)
- Windows: Windows Server 2019, 2022, 2025
ARM64 Support:
pool:
name: 'arm64-pool'
demands:
- agent.os -equals Linux
- Agent.OSArchitecture -equals ARM64
steps:
- script: uname -m
displayName: 'Verify ARM64 architecture'
Note: ARM64 support is available for self-hosted agents. Microsoft-hosted ARM64 macOS agents are in preview.
Sprint 262 - GitHub Copilot Integration (2025)
AI-Powered Work Item Assistance (Private Preview):
Connect Azure Boards work items directly with GitHub Copilot:
Capabilities:
- Send work items to Copilot coding agent
- AI-assisted bug fixes
- Automated feature implementation
- Test coverage improvements
- Documentation updates
- Technical debt reduction
Usage Pattern:
- Create work item in Azure Boards
- Add detailed requirements in description
- Send to GitHub Copilot
- Copilot generates code changes
- Review and merge via standard PR process
Integration with Pipelines:
trigger:
branches:
include:
- feature/*
Resources