πŸ”’ Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901
Guided AZ-400 Domain 3
Domain 3 β€” Module 1 of 13 8%
7 of 25 overall

AZ-400 Study Guide

Domain 1: Design and Implement Processes and Communications

  • Work Item Tracking: Boards, GitHub & Flow
  • DevOps Metrics: Dashboards That Drive Decisions
  • Collaboration: Wikis, Teams & Release Notes

Domain 2: Design and Implement a Source Control Strategy

  • Branching Strategies: Trunk-Based, Feature & Release
  • Pull Requests: Policies, Protections & Merge Rules
  • Repository Management: LFS, Permissions & Recovery

Domain 3: Design and Implement Build and Release Pipelines

  • Package Management: Feeds, Versioning & Upstream
  • Testing Strategy: Quality Gates & Release Gates
  • Test Implementation: Code Coverage & Pipeline Tests
  • Azure Pipelines: YAML from Scratch Free
  • GitHub Actions: Workflows from Scratch Free
  • Pipeline Agents: Self-Hosted, Hybrid & VM Templates
  • Multi-Stage Pipelines: Templates, Variables & Approvals
  • Deployment Strategies: Blue-Green, Canary & Ring Free
  • Safe Rollouts: Slots, Dependencies & Hotfix Paths
  • Deployment Implementations: Containers, Scripts & Databases
  • Infrastructure as Code: ARM vs Bicep vs Terraform
  • IaC in Practice: Desired State & Deployment Environments
  • Pipeline Maintenance: Health, Migration & Retention

Domain 4: Develop a Security and Compliance Plan

  • Pipeline Identity: Service Principals, Managed IDs & OIDC Free
  • Authorization & Access: GitHub Roles & Azure DevOps Security
  • Secrets & Secure Pipelines: Key Vault & Workload Federation
  • Security Scanning: GHAS, Defender & Dependabot

Domain 5: Implement an Instrumentation Strategy

  • Monitoring for DevOps: Azure Monitor & App Insights
  • Metrics & KQL: Analysing Telemetry & Traces

AZ-400 Study Guide

Domain 1: Design and Implement Processes and Communications

  • Work Item Tracking: Boards, GitHub & Flow
  • DevOps Metrics: Dashboards That Drive Decisions
  • Collaboration: Wikis, Teams & Release Notes

Domain 2: Design and Implement a Source Control Strategy

  • Branching Strategies: Trunk-Based, Feature & Release
  • Pull Requests: Policies, Protections & Merge Rules
  • Repository Management: LFS, Permissions & Recovery

Domain 3: Design and Implement Build and Release Pipelines

  • Package Management: Feeds, Versioning & Upstream
  • Testing Strategy: Quality Gates & Release Gates
  • Test Implementation: Code Coverage & Pipeline Tests
  • Azure Pipelines: YAML from Scratch Free
  • GitHub Actions: Workflows from Scratch Free
  • Pipeline Agents: Self-Hosted, Hybrid & VM Templates
  • Multi-Stage Pipelines: Templates, Variables & Approvals
  • Deployment Strategies: Blue-Green, Canary & Ring Free
  • Safe Rollouts: Slots, Dependencies & Hotfix Paths
  • Deployment Implementations: Containers, Scripts & Databases
  • Infrastructure as Code: ARM vs Bicep vs Terraform
  • IaC in Practice: Desired State & Deployment Environments
  • Pipeline Maintenance: Health, Migration & Retention

Domain 4: Develop a Security and Compliance Plan

  • Pipeline Identity: Service Principals, Managed IDs & OIDC Free
  • Authorization & Access: GitHub Roles & Azure DevOps Security
  • Secrets & Secure Pipelines: Key Vault & Workload Federation
  • Security Scanning: GHAS, Defender & Dependabot

Domain 5: Implement an Instrumentation Strategy

  • Monitoring for DevOps: Azure Monitor & App Insights
  • Metrics & KQL: Analysing Telemetry & Traces
Domain 3: Design and Implement Build and Release Pipelines Premium ⏱ ~13 min read

Package Management: Feeds, Versioning & Upstream

Design package management with Azure Artifacts and GitHub Packages. Configure feeds, upstream sources, views, and implement versioning strategies including SemVer and CalVer.

What is package management in DevOps?

β˜• Simple explanation

Think of a supermarket’s supply chain.

Your supermarket doesn’t grow its own tomatoes β€” it gets them from trusted suppliers, stores them in a warehouse, and puts the freshest ones on the shelf. If a supplier ships a bad batch, the warehouse rejects it before it reaches customers.

Package management works the same way. Your team creates reusable code libraries (packages) and stores them in a feed (the warehouse). Pipelines and developers pull packages from the feed instead of duplicating code. The feed controls quality (views), sources (upstream connections to public registries), and versions (SemVer) β€” just like a warehouse controls freshness, suppliers, and stock rotation.

Package management governs how reusable code libraries and build artefacts are created, versioned, hosted, and consumed. In a DevOps context it solves three problems simultaneously:

  • Dependency management β€” controlling which versions of third-party and internal packages your applications consume
  • Internal sharing β€” publishing your organisation’s shared libraries as first-class packages instead of copy-pasting code across repos
  • Pipeline artefact versioning β€” stamping build outputs with traceable, immutable version identifiers

The AZ-400 exam focuses on two platforms: Azure Artifacts (the package management service in Azure DevOps) and GitHub Packages (GitHub’s built-in registry). Both support multiple package types β€” NuGet, npm, Maven, pip, Docker β€” and integrate with their respective CI/CD systems.

Azure Artifacts vs GitHub Packages

Azure Artifacts adds upstream proxying and view-based promotion; GitHub Packages integrates tightly with the GitHub ecosystem
FeatureAzure ArtifactsGitHub Packages
Package typesNuGet, npm, Maven, Gradle, Python (pip), Universal Packagesnpm, NuGet, Maven, Gradle, Docker (Container Registry), RubyGems
Feed scopingProject-scoped or organisation-scoped feeds with granular permissionsRepository-scoped or organisation-scoped, inherits GitHub permissions model
Upstream sourcesBuilt-in upstream proxy β€” connects to public registries through the feed, caches packages locallyNo built-in upstream proxy β€” developers configure standard registry URLs directly
Views (promotion)@Local, @Prerelease, @Release β€” promote packages through quality stagesNo built-in view system β€” use tags, labels, or branch conventions instead
Storage pricing2 GB free per organisation, then pay-per-GB overage500 MB free on free tier, higher limits on Team and Enterprise plans
Universal PackagesYes β€” store any file type (ZIP, binaries, datasets) as a versioned packageNo direct equivalent β€” use release assets or Container Registry for arbitrary files
Best forEnterprise teams needing complex feed hierarchies, upstream proxying, and quality promotionTeams already on GitHub wanting package hosting tightly integrated with repos and Actions

Feeds and upstream sources

A feed is a hosted package repository β€” your team’s private package store.

Project-scoped vs organisation-scoped feeds

Project-scoped feeds are visible only within a single Azure DevOps project. Use them for project-specific packages that other teams should not consume directly.

Organisation-scoped feeds are visible across all projects in the organisation. Use them for shared libraries (authentication, logging, data-access layers) that multiple teams depend on.

Decision rule: If more than one project consumes the package, it belongs in an org-scoped feed. If it’s an internal implementation detail of one project, keep it project-scoped.

Upstream sources β€” the proxy layer

An upstream source connects your private feed to a public registry (npmjs.com, nuget.org, pypi.org). When a developer requests a package that isn’t cached locally, Azure Artifacts fetches it from the upstream, caches it, and serves it.

Why upstream matters:

  • Single feed URL β€” developers point to one feed, not multiple registries
  • Resilience β€” cached packages survive public registry outages
  • Security β€” administrators control which external packages enter the organisation
  • Speed β€” cached packages are served from your Azure region, not a distant CDN
Developer request β†’ Private Feed
    β”œβ”€β”€ Cache hit  β†’ Serve immediately
    └── Cache miss β†’ Fetch from upstream β†’ Cache β†’ Serve

Views β€” promoting packages through quality stages

Azure Artifacts provides three built-in views that act as quality gates for your packages:

ViewContainsTypical Consumer
@LocalEverything published β€” including untestedPackage authors, CI pipelines
@PrereleasePackages that passed initial validationQA teams, staging environments
@ReleaseProduction-approved packagesRelease pipelines, all production consumers

Packages enter at @Local and are promoted (manually or via pipeline automation) through @Prerelease to @Release. Each consumer subscribes to the appropriate view.

πŸ’‘ Scenario: Jordan's feed strategy at Cloudstream Media

☁️ Jordan Rivera at Cloudstream Media manages shared libraries consumed by 12 microservices. Before feeds, every team copy-pasted the streaming codec library into their repo β€” 12 copies, 12 diverging versions, zero coordination.

Jordan’s design:

  1. Organisation-scoped feed β€” cloudstream-shared β€” accessible to all teams
  2. Upstream sources β€” npmjs.com and nuget.org connected so developers never need to configure public registries
  3. View-based promotion β€” packages enter @Local on publish, move to @Prerelease after integration tests pass, and reach @Release only after QA sign-off
  4. Pipeline automation β€” the CI pipeline publishes to @Local; the release pipeline promotes to @Release after all gates pass

Avery (dev lead) asks: β€œCan I still use pre-release packages in dev?” Absolutely β€” dev environments point to @Local. Only production points to @Release.

Versioning strategies

Semantic Versioning (SemVer)

Format: MAJOR.MINOR.PATCH (e.g., 2.4.1)

ComponentWhen to IncrementExample
MAJORBreaking changes β€” API contracts change, backward compatibility broken1.x.x to 2.0.0
MINORNew features added β€” fully backward compatible2.3.x to 2.4.0
PATCHBug fixes only β€” no new features, fully backward compatible2.4.0 to 2.4.1

Pre-release labels: 2.4.1-beta.1, 2.4.1-rc.2 β€” these have lower precedence than the release version (2.4.1-beta.1 sorts before 2.4.1).

Build metadata: 2.4.1+build.457 β€” ignored for version precedence.

Caret vs tilde ranges

This is a frequent exam target:

RangeMeaningExample: given ^2.4.1Allows
Caret (^)Allows minor and patch updates^2.4.12.4.1 up to but not including 3.0.0
Tilde (~)Allows patch updates only~2.4.12.4.1 up to but not including 2.5.0

Memory trick: Tilde is tighter (both start with T) β€” it only allows patches. Caret is wider β€” it allows minor bumps too.

Calendar Versioning (CalVer)

Format: Uses dates β€” e.g., 2026.04 or 2026.04.21

FormatExampleUsed By
YYYY.MM2026.04Ubuntu, Terraform providers
YYYY.MM.DD2026.04.21pip, some internal tools
YY.MM26.04Ubuntu (short form)

When to use CalVer over SemVer: When releases follow a time-based schedule rather than a feature-based one, and when β€œwhen was this released” communicates more value than β€œwhat changed.”

SemVer for packages consumed by code; CalVer for products and platforms with scheduled releases
AspectSemVerCalVer
CommunicatesWhat changed β€” breaking, feature, or fixWhen it was released
Breaking change signalExplicit β€” MAJOR version bumpNone β€” requires release notes or changelogs
Best forLibraries, APIs, NuGet/npm packages consumed by other codeProducts, platforms, time-based release trains
Dependency rangesSupports caret/tilde ranges for flexible version lockingMust pin exact versions β€” ranges are meaningless with dates
Exam weightPrimary strategy tested β€” know the rules coldKnow when to recommend it, not deep details

Pipeline artefact versioning

Build artefacts need version stamps too. Common strategies in Azure Pipelines:

  • Build ID β€” $(Build.BuildId) β€” unique, auto-incrementing integer
  • Git SHA β€” the commit hash provides traceability back to source
  • SemVer from source β€” extract from package.json, .csproj, or pom.xml
  • Composite β€” $(Major).$(Minor).$(Rev:r) β€” manual major/minor with auto-incrementing revision

In GitHub Actions, use github.run_number (increments per workflow) or github.sha for commit-based versioning.

πŸ’‘ Exam tip: SemVer precision on the exam

The exam tests precise SemVer rules. Watch for:

  • The 0.x.x range is considered unstable β€” minor bumps can include breaking changes (no stability guarantee until 1.0.0)
  • Pre-release versions sort before the release: 1.0.0-alpha comes before 1.0.0
  • Build metadata (+build.123) is ignored for precedence β€” 1.0.0+build.1 and 1.0.0+build.2 are considered equal
  • Caret on 0.x.x behaves differently: ^0.2.3 only allows patch updates (same as tilde) because the major is 0
Question

What is an upstream source in Azure Artifacts?

Click or press Enter to reveal answer

Answer

A connection from your private feed to a public registry (npmjs.com, nuget.org, pypi.org). When a requested package isn't cached locally, Azure Artifacts fetches it from the upstream, caches it, and serves it. Benefits: single feed URL, resilience against public outages, security control over external packages.

Click to flip back

Question

What are the three Azure Artifacts views and their purpose?

Click or press Enter to reveal answer

Answer

@Local β€” all published packages including untested. @Prerelease β€” packages that passed initial validation. @Release β€” production-approved packages. Packages are promoted through views as quality gates. Dev environments consume @Local; staging uses @Prerelease; production uses @Release.

Click to flip back

Question

In SemVer, what does a caret (^) range allow vs a tilde (~) range?

Click or press Enter to reveal answer

Answer

Caret (^2.4.1) allows minor and patch updates β€” anything from 2.4.1 up to (but not including) 3.0.0. Tilde (~2.4.1) allows only patch updates β€” 2.4.1 up to (but not including) 2.5.0. Tilde is tighter (only patches); caret is wider (minor + patches).

Click to flip back

Question

When should you recommend CalVer over SemVer?

Click or press Enter to reveal answer

Answer

When releases follow a time-based schedule rather than feature milestones, and when 'when was this released' is more useful than 'what changed.' Examples: Ubuntu (26.04), platforms with regular release trains. SemVer remains better for libraries and APIs where breaking change signals matter.

Click to flip back

Question

What is the difference between project-scoped and organisation-scoped feeds in Azure Artifacts?

Click or press Enter to reveal answer

Answer

Project-scoped feeds are visible only within one Azure DevOps project β€” use for project-internal packages. Organisation-scoped feeds are visible across all projects β€” use for shared libraries consumed by multiple teams. Rule of thumb: if more than one project uses it, make it org-scoped.

Click to flip back

Knowledge check

Knowledge Check

Jordan wants production pipelines at Cloudstream Media to consume only QA-approved packages, while development pipelines should access everything including untested packages. What should Jordan configure?

Knowledge Check

A shared library team at version 2.4.1 adds a new optional parameter to their login method without changing existing behaviour. According to SemVer, what should the next version be?

Knowledge Check

Dr. Amira's government client requires that no public NuGet packages enter the build environment without being cached and scanned first. Which Azure Artifacts feature satisfies this?

🎬 Video coming soon

Next up: Testing Strategy β€” design quality gates, release gates, and comprehensive testing strategies that protect your pipelines from shipping broken code.

← Previous

Repository Management: LFS, Permissions & Recovery

Next β†’

Testing Strategy: Quality Gates & Release Gates

Guided

I learn, I simplify, I share.

A Guide to Cloud YouTube Feedback

© 2026 Sutheesh. All rights reserved.

Guided is an independent study resource and is not affiliated with, endorsed by, or officially connected to Microsoft. Microsoft, Azure, and related trademarks are property of Microsoft Corporation. Always verify information against Microsoft Learn.