Azure DevOps (https://dev.azure.com/<org>) is Microsoft's SaaS suite for the whole software lifecycle; the on-prem edition is Azure DevOps Server. Structure: Organization → Project → services.
| Service | Used for | Place in CI/CD |
|---|---|---|
| Boards | Work items, backlog, sprints | Plan |
| Repos | Private Git, pull requests, branch policies | Source (or use GitHub) |
| Pipelines | CI/CD for any language and any cloud | Build, test, deploy |
| Test Plans | Manual and exploratory testing | Test |
| Artifacts | npm, NuGet, Maven, Python, Universal package feeds | Package storage (Docker images go to ACR) |
flowchart LR
subgraph ORG["Organization example-org"]
subgraph P["Project devops-learn"]
B["Boards<br/>Plan"] --> R["Repos<br/>Code"] --> PL["Pipelines<br/>Build, Test, Deploy"]
PL --> T["Test Plans"]
PL --> A["Artifacts<br/>feed"]
end
end
PL --> CLOUD["Azure / AWS / GCP / on-prem"]
An agent is the machine that runs a job, grouped in an agent pool:
- Microsoft-hosted (ubuntu-latest, windows-latest, macOS-latest): a clean VM per job, deleted afterwards — no files or cache survive between runs. The -latest labels move to newer OS releases over time.
- Self-hosted: your own machine, keeps caches, reaches internal networks; you patch it.
Free tier (figures may change, check the pricing page): the first 5 Basic users, unlimited Stakeholders; private projects get 1 Microsoft-hosted parallel job (up to 60 minutes per run, 1,800 minutes per month) and 1 self-hosted parallel job. A new organization's free grant may require linking billing or a request.
Azure DevOps vs GitHub Actions: same CI/CD goal; Azure DevOps is strong on Boards, Test Plans and Microsoft-centric enterprises; GitHub Actions is tied to GitHub repos. Pipelines can still build code hosted on GitHub.
Traps: Pipelines deploys to AWS, GCP and on-prem too, not only Azure; Artifacts is not a Docker image registry.
| Command | Meaning |
|---|---|
az extension add --name azure-devops |
Install the CLI extension |
az devops configure --defaults organization=https://dev.azure.com/example-org project=devops-learn |
Set default org/project |
az devops project list -o table |
List projects |
Organisations, projects, and permissions
An organisation is the top-level account (billing, policies, connection to a Microsoft Entra tenant). Inside it, projects separate products or teams, each with its own Boards, Repos, Pipelines, and permissions. Security groups such as Project Administrators, Contributors, and Readers control who can do what, and access levels (Stakeholder, Basic, Basic + Test Plans) decide which features a user may use and what they cost.
Connect the organisation to Entra ID so people sign in with company accounts and leavers lose access automatically.
Boards in a little more depth
Work items follow a process template: Basic (Epic, Issue, Task), Agile (Epic, Feature, User Story, Bug, Task), Scrum (Product Backlog Item, Sprint), or CMMI. Mentioning AB#123 in a commit or PR links it to work item 123, so every change is traceable from requirement to deployment.
Service connections and extensions
A service connection stores how pipelines reach external systems: an Azure subscription, a container registry, a Kubernetes cluster, GitHub, or SSH targets. Each can be restricted to specific pipelines. The Visual Studio Marketplace offers extensions that add pipeline tasks and board features; install only those your organisation trusts.
Self-hosted agents in practice
A self-hosted agent is a small program registered to an agent pool with a personal access token or service principal. It suits builds that need internal network access, special hardware, or large caches. Scale set agents let Azure DevOps grow and shrink a VM scale set of agents automatically, a middle ground between Microsoft-hosted and fixed self-hosted machines.
Using the CLI and REST API
az devops covers projects, users, and settings; az repos, az pipelines, az boards, and az artifacts cover each service. For automation the CLI can sign in with a personal access token in the AZURE_DEVOPS_EXT_PAT environment variable.
| Command | Meaning |
|---|---|
az boards work-item create --title "Add login" --type "User Story" |
Create a work item |
az devops user list -o table |
Users in the organisation |