█
LastWrite
  • > Curriculum
  • > Pricing
  • > For Educators
  • > About
  • > Contact
Log InGet Started

Questions, concerns, bug reports, or suggestions? We read every message, write to us at [email protected].

More ways to reach us →
LastWrite

Structured computer science lessons for aspiring developers and security professionals.

[email protected]

(201) 785-7951

Mon–Fri, 9 AM–5 PM EST

Learn

  • Curriculum
  • Pricing

Company

  • About
  • For Educators & Schools
  • Contact Us

Legal

  • Terms of Service
  • Privacy Policy
© 2026 LastWrite. All rights reserved.
Curriculum/DevOps and Infrastructure/Cloud Platforms — Microsoft Azure/Azure DevOps
40 minIntermediate

Azure DevOps

After this lesson, you will be able to: Compare Azure DevOps Pipelines to GitHub Actions, write a YAML-based pipeline, and decide when to use Azure DevOps vs GitHub.

Azure DevOps and GitHub Actions both belong to Microsoft. Knowing where each fits matters for jobs at Microsoft-heavy shops.

Prerequisites:Blob Storage

Azure DevOps: the suite

Azure Boards: agile work tracking. Azure Repos: git hosting. Azure Pipelines: CI/CD (the relevant piece here). Azure Artifacts: package feeds (npm, NuGet, Maven). Azure Test Plans: manual + automated test management. Mature, integrated, enterprise. Sold as a single product since 2018.

Azure Pipelines vs GitHub Actions

Same model: YAML in repo, hosted runners, marketplace of tasks. Azure Pipelines: older, more mature, better Windows / .NET ecosystem, free for OSS, $40/parallel-job/mo for private. GitHub Actions: newer, simpler UX, integrates with GitHub-first features (PRs, environments, OIDC), free quotas more generous. Microsoft owns both; strategy is to keep Pipelines for enterprise (cross-repo, multi-cloud) and Actions for GitHub-native projects. Most NEW projects pick Actions. Existing Pipelines projects stay.

azure-pipelines.yml

Drop into the repo root. Same shape as GitHub Actions, different keywords.

tsx
# azure-pipelines.yml
trigger:
branches:
include: [main]
pr:
branches:
include: ['*']
pool:
vmImage: ubuntu-latest
variables:
NODE_VERSION: '20'
stages:
- stage: build
jobs:
- job: build_and_test
steps:
- task: NodeTool@0
inputs: { versionSpec: $(NODE_VERSION) }
- script: npm ci
- script: npm run lint
- script: npm test -- --run
- script: npm run build
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: dist
artifactName: dist
- stage: deploy
dependsOn: build
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
jobs:
- deployment: deploy_app_service
environment: production
strategy:
runOnce:
deploy:
steps:
- task: AzureWebApp@1
inputs:
azureSubscription: 'my-service-connection'
appName: 'myapp-yourname'
package: $(Pipeline.Workspace)/dist

Service connections (Azure DevOps's auth)

Service connection = a stored credential / federated identity from Azure DevOps to a target (Azure subscription, AWS, GitHub, ACR). Modern best practice: Workload Identity Federation (OIDC), no stored secrets. Configure once per environment; pipelines reference by name.

When Azure DevOps wins over GitHub Actions

Enterprise that already runs Azure DevOps (large code estates, audit, compliance). Complex pipelines across many repos (Azure DevOps has stronger cross-repo + multi-stage features). Mixed cloud (AWS + Azure) where you don't want GitHub Actions to be the orchestrator. Long-tail enterprise needs: Test Plans, manual approvals, Artifacts feeds. For new projects: GitHub Actions is the safer default. Knowing Azure DevOps is a job-market advantage at Microsoft shops.

Common mistakes only experienced engineers avoid

Picking Azure DevOps for new GitHub projects. The integration is weaker than Actions in that case. Storing Azure credentials as variables. Use Service Connections (with OIDC where possible). No environment approvals on production deploys. Available in Azure DevOps; turn them on. Skipping templates. YAML repetition becomes unmaintainable; use templates + parameters. Forgetting the per-parallel-job cost on private projects.

Quick Check

Where would you put a new open-source project's CI/CD?

Pick the pragmatic default.

Sign in and purchase access to unlock this lesson.

Sign in to purchase
←Azure Blob Storage
Back to Cloud Platforms — Microsoft Azure
Azure Kubernetes Service (AKS)→