Skip to content
CAMPUX Cloud Bootcamp
Field notes · Roles
Azure DevOps engineer

What is an Azure DevOps engineer?

By Captain O8 min read

There is a job title, and there is a product with almost the same name, and the overlap confuses everyone. An Azure DevOps engineer is a person who automates software delivery on Azure. Azure DevOps is the Microsoft toolset they often use to do it. Untangle those two and the role becomes clear.

New to cloud? CAMPUX is a free, build-first course. Start here →

An Azure DevOps engineer builds and automates software delivery on Microsoft Azure, typically using the Azure DevOps suite — Azure Pipelines for CI/CD, Repos for source control, Artifacts for packages, and Boards for work tracking — often alongside Bicep or Terraform. The role pairs DevOps practices with Microsoft's tooling and the AZ-400 certification. The rest of this note breaks that sentence apart, because each piece of it is a thing people search for on its own.

Azure DevOps engineers use Repos, Pipelines, Artifacts, and Boards to build, test, and release onto Azure with IaC.ReposPipelinesArtifactsBoardsbuild → test → releaseto Azure, with Bicep / Terraform
Figure — An Azure DevOps engineer works in the Azure DevOps suite — Repos for source, Pipelines for CI/CD, Artifacts for packages, Boards for work — to build, test, and release onto Azure, usually with Bicep or Terraform describing the infrastructure. It is DevOps practice expressed in Microsoft’s tooling, signalled by the AZ-400 cert.

The role in one sentence

An Azure DevOps engineer owns the path a change takes from a developer's commit to running software your users touch. When that path is a manual checklist — someone builds on their laptop, copies files to a server, crosses their fingers — releases are rare, scary, and easy to get wrong. The engineer's job is to turn that checklist into code: a pipeline that builds, tests, and deploys automatically, the same way every time, so a release stops being an event and becomes a habit.

In practice the work splits into a few recurring themes. You wire up continuous integration so every commit gets built and tested. You wire up continuous delivery so a passing build can move through staging and into production with approvals, not with hope. You describe the servers, networks, and databases as infrastructure as code so the environment itself is version-controlled. And you keep an eye on what happens after release — logs, metrics, failures — so the loop closes and the next change is a little safer than the last. That is DevOps the practice. Azure DevOps the product is one common way to carry it out.

The Azure DevOps suite

Azure DevOps is a hosted service made of four parts that share one project and one identity model. You rarely use all four with equal weight, but knowing what each is for keeps the vocabulary straight.

The reason the suite hangs together is that these pieces cross-reference each other. A work item in Boards links to the pull request in Repos that closed it, which triggered the run in Pipelines that published a package to Artifacts. That traceability — from a planned task to the exact build that shipped it — is a large part of why enterprises keep the whole suite rather than stitching separate tools together.

A pipeline, end to end

The heart of the job is the pipeline file. In Azure Pipelines it is a YAML document, conventionally named azure-pipelines.yml, checked into the root of your repository. A pipeline is organised as stages, which contain jobs, which contain steps. Here is a minimal but honest shape — build and test a project, then deploy it — trimmed to the parts worth seeing:

# azure-pipelines.yml
trigger:
  branches:
    include:
      - main

pool:
  vmImage: ubuntu-latest

stages:
  - stage: Build
    jobs:
      - job: build_and_test
        steps:
          - script: dotnet build --configuration Release
            displayName: Build
          - script: dotnet test --configuration Release
            displayName: Run tests
          - task: PublishBuildArtifacts@1
            inputs:
              pathToPublish: '$(Build.ArtifactStagingDirectory)'
              artifactName: drop

  - stage: Deploy
    dependsOn: Build
    condition: succeeded()
    jobs:
      - deployment: deploy_web
        environment: production
        strategy:
          runOnce:
            deploy:
              steps:
                - task: AzureWebApp@1
                  inputs:
                    azureSubscription: 'campux-service-connection'
                    appName: 'campux-retail-web'
                    package: '$(Pipeline.Workspace)/drop/**/*.zip'

Read it top to bottom and it tells a story. The trigger says "run this whenever someone pushes to main." The pool picks the kind of machine that runs the work. The Build stage compiles, runs the tests, and publishes the result as an artifact called drop. The Deploy stage waits for Build to succeed, then pushes that artifact to an Azure Web App through a service connection — the stored credential that lets the pipeline act on your Azure subscription. The environment: production line is where you can attach an approval gate, so a human signs off before the deploy runs.

That is a real pipeline in miniature. Production ones grow variables, secrets pulled from Azure Key Vault, templates shared across repos, and separate stages for dev and staging — but the skeleton stays exactly this: stages hold jobs, jobs hold steps, and a passing build flows into a controlled deploy.

Infrastructure as code in the pipeline

Deploying the application is only half of it. The Web App, its plan, the database, the network — those need to exist and be configured, and an Azure DevOps engineer describes them as code rather than clicking through the portal. On Azure the two common choices are Bicep, Microsoft's own declarative language for Azure resources, and Terraform, the cloud-agnostic tool from HashiCorp. Either one lives in the same repo and runs as a pipeline stage before the app deploys:

# an infrastructure stage, Bicep flavour
  - stage: Provision
    jobs:
      - job: bicep
        steps:
          - task: AzureCLI@2
            inputs:
              azureSubscription: 'campux-service-connection'
              scriptType: bash
              scriptLocation: inlineScript
              inlineScript: |
                az deployment group create \
                  --resource-group campux-retail-rg \
                  --template-file infra/main.bicep \
                  --parameters env=production

The point is not the exact command; it is that the environment is now version-controlled. If someone needs a second identical staging environment, they run the same template with different parameters instead of rebuilding it by hand and hoping it matches. Terraform does the same job with terraform plan and terraform apply steps, and adds a state file you store somewhere shared, such as an Azure Storage container. Which one you meet depends on the shop: Azure-only teams often lean Bicep, multi-cloud teams usually standardise on Terraform. Knowing both is a fair chunk of what makes the role portable.

Azure DevOps vs GitHub Actions

This is the comparison that trips up newcomers, partly because Microsoft owns both products and keeps investing in both. They overlap heavily on CI/CD and differ in shape and centre of gravity.

 Azure DevOps (Pipelines)GitHub Actions
What it isAn integrated suite — Boards, Repos, Pipelines, ArtifactsA CI/CD feature built into GitHub repositories
Where config livesazure-pipelines.yml in the repo, stages/jobs/stepsWorkflow YAML in .github/workflows/, jobs/steps
How it startsTriggers, plus release approvals and gatesRepository events (push, pull request, issue, schedule)
Work trackingAzure Boards, in the same productGitHub Issues and Projects, separately
Reusable unitsTemplates and task extensionsMarketplace actions, community-published
Typical fitEnterprises wanting planning and release governance togetherOpen source and teams already living in GitHub

The honest summary: new projects increasingly start on GitHub Actions because the code already lives in GitHub and the setup is a single file away. A great many enterprises still run Azure Pipelines, especially where Boards and release approvals matter, and where years of pipelines already exist. Plenty of organisations run both at once — Actions for the build, Azure DevOps for release management, or the reverse. An Azure DevOps engineer is expected to be fluent in Pipelines and at least conversant in Actions, because the market has not picked a single winner and probably will not.

DevOps is the practice. Azure DevOps is one product that supports it. GitHub Actions is another. The role is the person who makes any of them deliver software safely.

Skills and the AZ-400 certification

Strip away the branding and the skill set is recognisably the DevOps skill set with an Azure accent. You need to be comfortable with Git and branching strategy, with YAML and the mechanics of a build, with at least one infrastructure-as-code tool, with secrets and identity so credentials never end up in a repo, and with enough scripting — usually Bash or PowerShell — to glue steps together. Reading logs and metrics after a release matters as much as producing the release, because a pipeline that ships bad code fast is worse than a slow one.

The certification that maps to the role is AZ-400, Designing and Implementing Microsoft DevOps Solutions, which grants the Azure DevOps Engineer Expert badge. It is an expert-level exam, and Microsoft asks that you already hold an associate certification first — either AZ-104 (Azure Administrator) or AZ-204 (Azure Developer). The AZ-400 syllabus is broad on purpose: source control strategy, CI/CD pipeline design, infrastructure as code, security and compliance in the pipeline, and release and monitoring practices. It tests judgement about a delivery process, not the memorised location of a button. A credential is not a job, but this one signals to a hiring manager that you have seen the whole loop, not just one corner of it.

A note on the two associate paths

If you come from operations — servers, networking, identity — AZ-104 is the natural associate step before AZ-400. If you come from writing application code, AZ-204 fits better. Either satisfies the prerequisite. The DevOps role sits on the seam between those two worlds, which is exactly why it pays well and why people find it hard to break into cold: it wants a bit of both backgrounds.

How to start

You do not need a job to build the thing the job is about. Create a free Azure DevOps organisation, put a small application in a repo — anything that builds and has a couple of tests — and write an azure-pipelines.yml that compiles and tests it on every push. That alone teaches you triggers, agents, and the stage/job/step shape. Then add a deploy stage that pushes to a free-tier Azure Web App, and watch a commit turn into a live change with no hands on a keyboard between them.

Once that works, add the infrastructure. Write a small Bicep or Terraform file that creates the Web App itself, and move it into a stage that runs before your deploy, so the whole environment is described in the same repo. Now you have, in miniature, exactly what the role does at scale: code, pipeline, and infrastructure living together, shipping automatically. Build that once and the AZ-400 objectives stop reading like a syllabus and start reading like a description of a thing you already made.

Questions people also ask

What does an Azure DevOps engineer do?

An Azure DevOps engineer builds and maintains the pipeline that carries code from a commit to running software. Day to day that means writing CI/CD pipelines in Azure Pipelines, managing source control in Azure Repos, publishing build outputs to Azure Artifacts, tracking work in Azure Boards, and provisioning the target infrastructure with Bicep or Terraform. The goal is releases that are automated, repeatable, and safe to run often.

Is Azure DevOps the same as DevOps?

No. DevOps is a practice — a way of working that shortens the loop between writing code and running it in production. Azure DevOps is a specific Microsoft product, a suite of services (Pipelines, Repos, Artifacts, Boards) that helps you do DevOps. You can practise DevOps with no Microsoft tools at all, and the Azure DevOps product is just one of several toolchains that support it.

What is the difference between Azure DevOps and GitHub Actions?

Both run CI/CD, and Microsoft owns both. Azure DevOps is an integrated suite with Boards, Repos, Pipelines, and Artifacts under one roof, and it suits organisations that want work tracking and release management in one place. GitHub Actions lives inside GitHub, is triggered by repository events, and centres on the code and its community. Newer projects often start on GitHub Actions; many enterprises still run Azure Pipelines, and plenty of teams use both.

What certification does an Azure DevOps engineer need?

The headline credential is AZ-400, Designing and Implementing Microsoft DevOps Solutions, which earns the Azure DevOps Engineer Expert badge. Microsoft asks that you first hold an associate certification — either AZ-104 (Azure Administrator) or AZ-204 (Azure Developer) — before AZ-400. The exam covers pipelines, source control strategy, infrastructure as code, security, and release management rather than a single tool.

Further reading — the Microsoft docs
Your next class · free
You've read the idea. Class 20 — Infrastructure as Code: Bicep is where you build it, hands-on — no account needed.Start Class 20 →
Captain O
Founder & instructor · CAMPUX Cloud Engineering Bootcamp
Related: The cloud DevOps engineer role · The Azure certification path · Azure CLI cheat sheet →