Courseiva
Design and implement build and release pipelineseasyMultiple ChoiceObjective-mapped

AZ-400 Practice Question: Design and implement build and release pipelines

You are implementing a CI pipeline for a Node.js application. The pipeline must run linting, unit tests, and build the application. Which YAML structure is most appropriate?

⚠ Common exam trap

Watch out — candidates often confuse the need for separate stages or jobs with the concept of modularity, not realizing that for a simple sequential CI workflow, a single job with multiple steps is the most efficient and appropriate structure.

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

Define one job with multiple steps: lint, test, build.

A CI pipeline for a Node.js application typically runs linting, unit tests, and build sequentially within a single job using multiple steps. This ensures that each step executes in order, sharing the same workspace and environment, which is efficient for a simple CI workflow. Defining separate stages (Option A) or multiple jobs (Option C) adds unnecessary overhead and complexity for tasks that are inherently sequential and do not require independent environments.

Answer analysis

Option-by-option breakdown

For each option: why learners choose it and why it is or isn't the right answer here.

  • Define three separate stages: lint, test, build.

    Why it's wrong here

    Defining three separate stages for lint, test, and build is unnecessary in a simple CI pipeline; stages are designed for deployment gates and environment-specific approvals, not for logically grouping basic build tasks. This approach adds pipeline-level overhead and makes the pipeline more complex without providing any benefit for a basic Node.js application.

  • Define one job with parallel steps using 'parallel' keyword.

    Why it's wrong here

    Using the 'parallel' keyword to run lint, test, and build concurrently in a single job can cause race conditions and file system collisions because all steps execute simultaneously on the same agent. Additionally, later steps like build often depend on the results of earlier steps, so parallel execution undermines fail-fast behavior and deterministic ordering.

  • Define multiple jobs without dependencies.

    Why it's wrong here

    Defining multiple jobs without dependencies is inefficient because each job runs on a separate agent and acquires separate resources, which increases cost and setup time. Without dependency constraints, the jobs may execute in any order or simultaneously, making the pipeline slower and potentially producing inconsistent outcomes due to independent workspaces.

  • Define one job with multiple steps: lint, test, build.

    Why this is correct

    A single job with multiple sequential steps is the simplest and fastest CI approach for a Node.js application, as it runs in one workspace with no inter-job communication overhead. Each step executes in order, automatically stopping the pipeline on the first failure, and step outputs are directly available to subsequent steps.

About these practice questions

Courseiva writes every AZ-400 question from scratch — 823 in total, each with an explanation and a wrong-answer breakdown. None are copied from real exams or dumps. Learn why practice questions differ from exam dumps →

How Courseiva writes practice questions · Editorial policy

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.