AZ-400 Practice Question: Design and implement build and release pipelines
Your team is adopting Infrastructure as Code (IaC) using Bicep. You have a multi-stage YAML pipeline that deploys Azure resources to dev, test, and prod environments. You need to ensure that the Bicep files are validated and deployed consistently, and that any changes to the infrastructure are approved for production. You also want to use the latest version of the Azure CLI task. What is the recommended approach?
Answer choices
Why each option matters
Answer the question above first, then reveal the full breakdown to understand why each option is right or wrong.
Correct answer & explanation
✓
Use the AzureCLI task with inline script to run 'az deployment group validate' and 'az deployment group create'. Add environments with approval gates for production.
It uses the AzureCLI task with the 'az deployment group validate' and 'az deployment group create' commands, which natively support Bicep files. This approach integrates with multi-stage YAML pipelines and allows adding approval gates for production environments. Option A is incorrect because the Azure Resource Manager Template Deployment task requires a compiled ARM JSON file, adding an unnecessary compilation step and not leveraging Bicep's native capabilities. Option B is incorrect because creating separate pipelines for each environment duplicates effort and does not take advantage of the multi-stage YAML pipeline structure with environment approvals. Option D is incorrect because using a PowerShell task with 'New-AzResourceGroupDeployment' cmdlet lacks native Bicep support and may require manual compilation.
Answer analysis
Option-by-option breakdown
For each option: why learners choose it and why it is or isn't the right answer here.
- ✗
Use the Azure Resource Manager Template Deployment task with the 'templateLocation' parameter pointing to the compiled ARM JSON.
Why it's wrong here
The ARM Template Deployment task cannot consume Bicep source directly; it requires the template to be precompiled to ARM JSON, adding a separate build step and potentially using an older template schema. This task may also lag behind the latest Bicep features, causing validation and deployment results to differ from the Bicep compiler used by the Azure CLI.
- ✗
Create three separate pipelines for each environment, each using the ARM Template Deployment task.
Why it's wrong here
Creating three separate pipelines duplicates the deployment logic and parameter definitions, making updates error-prone and increasing maintenance overhead. A single pipeline with environment resources, stage conditions, and approval gates is a cleaner approach that centralizes configuration while still isolating pre-production and production environments.
- ✓
Use the AzureCLI task with inline script to run 'az deployment group validate' and 'az deployment group create'. Add environments with approval gates for production.
Why this is correct
The Azure CLI task natively supports Bicep files, so you can run 'az deployment group validate' to catch template errors before deploying, then 'az deployment group create' to apply the resource definitions. Adding environments with approval gates for production lets you control promotions and gain auditability, all within one pipeline and without any precompilation step.
- ✗
Use a PowerShell task with the 'New-AzResourceGroupDeployment' cmdlet.
Why it's wrong here
The PowerShell cmdlet 'New-AzResourceGroupDeployment' may not support the latest Bicep features promptly, because the Az PowerShell module has a slower release cadence than the Azure CLI. It also lacks the explicit validation step of 'az deployment group validate', so you would need to rely on deployment failures instead of catching issues during a preflight check.
Go deeper
Related to this question
Learn chapter
Introduction to DevOps and Azure DevOps
Key term
Stage
A stage is a discrete phase in a software development or deployment pipeline where code is built, tested, integrated, or released in a controlled environment.
Key term
Task
A Task in Azure DevOps is a predefined, reusable step that performs a specific action during a build or release pipeline, like compiling code or running tests.
About these practice questions
One of 823 original AZ-400 practice questions on Courseiva, each with a full explanation and wrong-answer analysis — not exam dumps or protected exam content. Learn why practice questions differ from exam dumps →
JA
Written by Johnson Ajibi, MSc IT Security
Senior Network & Security Engineer · founder of Courseiva
This AZ-400 practice question is part of Courseiva's free Microsoft certification practice question bank. Courseiva provides original exam-style practice questions with explanations, topic-based practice, mock exams, readiness tracking, and study analytics to help learners prepare for the AZ-400 exam.