Mid DevOps

Link the Key Vault to a Variable Group in Pipelines. Follow: Example (YAML): variables: - group: 'KeyVaultSecrets' steps: - script: echo "Using secret value..." env: StorageKey: $(StorageKey) Example scenario: When your pipeline runs, Azure DevOps automatically retrieves secrets from Key Vault. If a secret changes, you don’t have to update your YAML — the latest version is always used. 3⃣ How do you handle identity and access management for build agents?

Each build or release agent runs under a specific identity that needs permissions to

deploy or access resources.

Best practices:

  • Use Managed Identity for self-hosted agents (so no credentials are stored).
  • Use Service Principals for hosted agents with least privilege roles (e.g., Contributor

on a resource group).

  • Use Azure RBAC to control access to resources.
  • Rotate service principal secrets regularly.

Example scenario:

Your build agent deploys a web app to Azure.

Instead of storing a username/password, you use a Managed Identity with “Contributor”

access to the resource group — this way, no secrets are needed and access is fully

auditable.

Follow:

4⃣ How do you ensure compliance and audit trails in Azure DevOps?

Azure DevOps provides several tools for traceability, governance, and auditing.

Ways to ensure compliance:

  • Auditing → Tracks every user action (build edit, approval, code change).
  • Branch Policies → Enforce code reviews, build validation, and work item linking.
  • Approvals & Gates → Ensure managers approve production releases.
  • Work Item Linking → Every commit and deployment ties back to a tracked work

item.

  • Security Groups & Permissions → Control access by least privilege.

Example scenario:

In a financial organization, every production deployment must be approved by a release

manager.

Azure DevOps enforces that no code can be merged to main without linked work items and

passing builds — creating a full audit trail for compliance reviews.

🚀 Advanced / Real-World Scenarios

5⃣ How would you handle blue-green or canary deployments in Azure

DevOps?

Both strategies reduce downtime and risk during production deployments.

  • Blue-Green Deployment:

Maintain two identical environments (Blue = live, Green = standby).

Deploy to Green → test → switch traffic → make Green live.

  • Canary Deployment:

Gradually release new versions to a small user subset first, then increase rollout.

Follow:

Implementation (Azure DevOps + Azure App Service):

  • Use deployment slots (staging and production).
  • Deploy to staging slot first.
  • Run smoke tests.
  • Swap slots when verified.

Example (YAML):

  • task: AzureAppServiceManage@0

inputs:

azureSubscription: 'MyServiceConnection'

Action: 'Swap Slots'

WebAppName: 'myapp-prod'

SourceSlot: 'staging'

TargetSlot: 'production'

Scenario:

You deploy a new API to the staging slot, run tests, and only swap to production after

validation — ensuring zero downtime.

6⃣ How would you implement a multi-stage YAML pipeline for .NET apps?

Multi-stage YAML pipelines allow you to define the entire CI/CD process (build, test, deploy)

in a single file.

Example:

stages:

  • stage: Build

jobs:

  • job: BuildApp

steps:

  • script: dotnet build --configuration Release

Follow:

  • stage: Test

dependsOn: Build

jobs:

  • job: RunTests

steps:

  • script: dotnet test
  • stage: Deploy

dependsOn: Test

jobs:

  • deployment: DeployToDev

environment: dev

strategy:

runOnce:

deploy:

steps:

  • task: AzureWebApp@1

inputs:

azureSubscription: 'MyServiceConnection'

appName: 'myapp-dev'

Scenario:

After every push to main, the pipeline automatically builds, tests, and deploys to a dev slot

— ready for QA approval.

7⃣ How do you integrate Azure DevOps with GitHub, Jira, or Slack?

Azure DevOps offers built-in and third-party integrations for collaboration and tracking.

  • GitHub → Link commits and pull requests to Azure Boards.
  • Jira → Connect issues to commits or deployments using service hooks.
  • Slack / Teams → Get real-time pipeline notifications.

Example (Slack Integration):

Follow:

  • Go to Project Settings → Service Hooks → Slack.
  • Configure notifications for “Build completed” or “Release failed.”

Scenario:

When a pipeline fails, your team’s Slack channel gets an instant message:

❌ Build failed for main (Build ID #1203) — Click to view logs.

8⃣ How do you manage multiple environments (dev, test, prod) efficiently

in CI/CD?

Use multi-stage pipelines with separate environments, each having its own approvals,

variables, and configuration.

Best practices:

  • Use variable groups per environment (Dev, Test, Prod).
  • Use deployment stages with approvals.
  • Manage configurations using appsettings.{env}.json or transform files.
  • Use release gates for quality checks before production.

Example (YAML snippet):

variables:

  • group: 'DevSettings'

stages:

  • stage: DeployToDev

jobs:

  • deployment: DevDeploy

environment: dev

strategy:

runOnce:

deploy:

Follow:

steps:

  • task: AzureWebApp@1

Scenario:

When code is merged, it auto-deploys to Dev.

After QA approval, it moves to Test → Prod with approvals and gates in between.

9⃣ How do you optimize build and release times for large .NET solutions?

Optimizing pipelines saves time and cost — especially for large solutions.

Tips:

Use pipeline caching for NuGet packages:

  • task: Cache@2

inputs:

key: 'nuget | "$(Agent.OS)" | packages.lock.json'

path: '~/.nuget/packages'

  • Build only changed projects using path filters.
  • Use parallel jobs for independent tests.
  • Use incremental builds or artifact reuse between stages.

Scenario:

By caching NuGet packages and running tests in parallel, a 20-minute build drops to under

8 minutes.

🔟 How do you migrate existing CI/CD pipelines from Jenkins or

TeamCity to Azure DevOps?

Migration usually involves:

Follow:

More from Microsoft Azure Tutorial

All questions for this course