Azure DevOps: One Platform to Plan, Build, Test and Ship Software
A beginner-friendly guide to Azure DevOps: its five services, how teams plan work, store code, review changes, build and release automatically, and keep the whole process secure and measurable.
Imagine a restaurant kitchen that serves hundreds of guests every evening. The head chef plans the menu, the cooks prepare the dishes, someone tastes each plate before it leaves, the waiters carry the food to the right tables, and the manager checks which dishes sell well. If any one of these steps is chaotic, such as orders getting lost, dishes going out unchecked or waiters not knowing which table is waiting, the whole evening suffers. A well-run kitchen has a clear system that connects every step from order to table. Azure DevOps is that kind of system for software teams: it connects the steps from an idea to a working feature in the hands of users.
In this guide, we will learn Azure DevOps from the very beginning. You do not need to be an expert programmer or a cloud engineer. Each new word will be explained the first time it appears, with a simple comparison from everyday life. By the end, you will understand what each part of Azure DevOps does, how the parts work together, and how teams use it to deliver software quickly, safely and with fewer surprises.
1What Is DevOps, and What Is Azure DevOps?
DevOps is a way of working, and Azure DevOps is a set of Microsoft tools that supports that way of working.
Let us start with the basic words. Software is the set of programs that run on computers and phones, such as a banking app or an online shop. A developer is a person who writes software. An operations team is the group that runs the software on servers and keeps it available to users. For many years these two groups worked separately. Developers finished a program and “threw it over the wall” to operations, who then struggled to run it. Misunderstandings, delays and blame were common.
DevOps, a joining of the words development and operations, is a culture and a set of practices in which both groups work together and share responsibility for the whole journey, from idea to running software. It stresses teamwork, small and frequent changes, automation of repetitive work, and learning from measurements.
Azure DevOps is Microsoft’s platform for supporting this journey. It offers tools for planning work, storing code, building and testing automatically, delivering software to servers, and sharing software packages. It comes in two forms: Azure DevOps Services, which runs in the Microsoft cloud, and Azure DevOps Server, which you install on your own computers if rules require it. This guide focuses on the cloud version.
DevOps is like a relay race where every runner trains together and practices handing over the baton smoothly. Azure DevOps is the track, the lane markings, the stopwatch and the baton exchange zones, which make the handovers easy, fast and measurable.
2The Problems That DevOps Tools Solve
Without good tools, software projects suffer from lost work, slow releases and surprise failures.
To appreciate Azure DevOps, picture a team that has no shared system. They keep their task list in a spreadsheet, send code to each other by email, build the program by hand on one person’s laptop, and copy files to the server late on Friday evening. What goes wrong?
Lost and conflicting work
Two people change the same file at the same time, and one person’s work is silently overwritten.
“It works on my machine”
The program runs on the developer’s laptop but fails on the server, because the setups are different.
Slow, scary releases
Manual deployment takes hours, mistakes creep in, and teams release rarely because each release feels risky.
No visibility
Nobody can easily answer what is being worked on, what is finished or which change broke the system.
Quality surprises
Bugs are found late, by users, instead of early by automatic checks.
Azure DevOps answers each problem: shared version control prevents lost work, automated builds make results consistent, pipelines make releases routine, boards give visibility, and automatic tests catch mistakes early.
Working without these tools is like cooking for a banquet using one tiny stove, no recipe cards and no tasting. Working with them is like a professional kitchen with stations, written recipes and a tasting step before every plate leaves.
3The Five Services at a Glance
Azure DevOps is made of five services that you can use together or separately.
Azure Boards
Tracks work such as features and bugs using backlogs, boards and sprints.
Azure Repos
Stores source code with version history, using Git, with pull requests for reviews.
Azure Pipelines
Builds, tests and deploys software automatically every time code changes.
Azure Test Plans
Supports manual and exploratory testing, with test cases and results tracked.
Azure Artifacts
Hosts packages and libraries so teams can publish and reuse them safely.
flowchart LR
B["Boards: plan the work"] --> R["Repos: write and review code"]
R --> P["Pipelines: build, test, deploy"]
P --> A["Artifacts: share packages"]
P --> T["Test Plans: manual testing"]
P --> U["Users get the new version"]
U -. "feedback and new ideas" .-> B
You do not have to use all five. Many teams use Azure Pipelines with code stored in GitHub, or use Azure Boards only for planning. The services are designed to connect smoothly but can stand alone.
The five services are like the departments of a factory: the planning office, the design workshop, the assembly line, the quality inspection room and the parts warehouse. Each has its own job, and together they turn ideas into finished products.
4Organizations, Projects and People
Azure DevOps is organized in layers, and understanding the layers helps you manage access and structure.
The top level is the organization, which represents your company or group and is the home for billing, users and settings. Inside an organization you create projects. A project is a container for one product or team’s work, and holds its own boards, repositories, pipelines, test plans and artifacts. You might create one project for your mobile app and another for your website.
Organizations connect to Microsoft Entra ID, the identity system used across Microsoft cloud services, so people sign in with their normal work accounts, and access can be removed centrally when someone leaves.
Access levels
Each person has an access level that decides which services they can use. Stakeholders can view and add work items at no cost, while Basic users get full access to boards, repos and pipelines, and some have extra rights through other Microsoft subscriptions.
Security groups
People are placed into groups such as Readers, Contributors and Project Administrators, each with a set of permissions.
Fine-grained permissions
You can allow or deny specific actions, such as who may delete a repository, approve a deployment or change a pipeline.
An organization is like a large office building owned by your company. Each project is a floor with its own rooms and equipment. Security groups are the badge types, deciding which floors and rooms each person may enter.
Give permissions to groups and put people into groups, rather than setting rights person by person. It is easier to review and to keep tidy as the team changes.
5Azure Boards: Planning and Tracking Work
Azure Boards turns ideas and problems into trackable items that everyone can see.
Work in Azure Boards is recorded as work items. A work item is a small card describing one piece of work: its title, description, who is responsible, its state and how important it is. Different kinds of work items exist, and they fit together in layers.
Epic
A very large goal that takes months, such as “launch the mobile app”.
Feature
A meaningful capability within an epic, such as “customers can track their orders”.
User story or backlog item
A small, valuable piece of work written from the user’s view, such as “as a customer, I can see my order status”.
Task
A specific step of work, such as “design the status screen” or “write the tests”.
Bug
A report of something that is broken and needs fixing.
Backlogs, boards and sprints
A backlog is an ordered list of work waiting to be done, with the most important items at the top. A Kanban board shows the same items as cards moving across columns, such as New, Active, Resolved and Done, so everyone can see progress at a glance. Many teams work in sprints, which are short fixed periods, often two weeks, in which the team commits to finish a chosen set of items. At the start, the team picks items from the backlog and plans the sprint; at the end, it reviews what was finished.
The backlog is a restaurant’s list of all dishes it might add to the menu. A sprint is a decision to prepare a specific set of dishes this fortnight. The board is the kitchen wall where order slips move from “waiting” to “cooking” to “served”.
Azure Boards offers process templates such as Basic, Agile, Scrum and CMMI, each with its own work item types and states. Choose the one that matches how your team already works, and avoid heavy customization at the start.
6Planning in Practice: Sprints, Dashboards and Delivery Plans
Good planning combines realistic commitments with visible progress.
Refine the backlog
Before a sprint, the team clarifies the top items, splits big ones into smaller ones and agrees what “done” means for each.
Plan the sprint with capacity
Azure Boards can account for each person’s available hours, holidays and days off, so the team does not promise more than it can deliver.
Track daily
The team moves cards across the board, and a burndown chart shows whether remaining work is shrinking at the expected pace.
Review and reflect
At the end, the team shows what was completed and discusses what to improve in how it works.
Dashboards
Customizable pages with charts and tiles, such as sprint progress, build health and open bugs.
Delivery Plans
A calendar-style view across several teams, showing features and their timing, helpful for managers and for coordinating dependencies.
Queries
Saved searches that list work items by rules, for example “all high-priority bugs assigned to me”.
Analytics views
Prepared data for reporting, including connection to Power BI for custom charts.
Treating the board as a reporting tool for managers instead of a working tool for the team. If cards are updated only once a week, the board lies. Update items as work actually moves.
7Azure Repos and the Basics of Git
Version control remembers every change to your code, so many people can work together safely.
Source code is the text files that programmers write. Version control is a system that records every change made to those files, who made it and why, so you can compare versions, go back to an earlier one and combine the work of many people. The most popular version control system is Git, and Azure Repos provides hosted Git repositories.
Repository
The storage place for a project’s files and their complete history.
Commit
A saved snapshot of changes with a short message explaining what and why.
Branch
A separate line of work, so you can try a change without disturbing the main code.
Merge
Combining the changes from one branch into another.
Clone and push
Clone copies a repository to your computer; push sends your commits back to the shared copy.
Pull request
A request to merge your branch, which opens a discussion and review before the change is accepted.
Think of a shared recipe book. Each cook who wants to improve a recipe makes a copy of the page, which is a branch, tries the change, and shows it to the others for tasting. If everyone approves, the improved page replaces the old one in the master book, which is a merge. The book also keeps every older version of every page.
A short, clear message such as “Fix rounding error in invoice total” helps everyone, including your future self, understand the history. Link commits to work items so each change is traced to its reason.
8Branching Strategies and Branch Policies
A branching plan keeps the main code stable while many people make changes.
Teams need an agreement about how branches are used. Without one, code becomes messy and hard to merge. Two common approaches exist.
Feature branches with a stable main branch
Everyone creates a short-lived branch for each task, works there, and merges back to the main branch through a pull request. The main branch always holds code that is ready to build and release. This is simple and works for most teams.
Trunk-based development
Developers merge very small changes into the main branch, called the trunk, many times a day, often hiding unfinished features behind switches. This reduces big, painful merges and suits teams with strong automated testing.
To protect the main branch, Azure Repos offers branch policies, which are rules that every change must satisfy before it can be merged.
Minimum reviewers
Require at least one or two other people to approve a change, so no one merges their own code unchecked.
Build validation
Run a pipeline automatically on every pull request, and block the merge if the build or tests fail.
Linked work items
Require each change to be connected to a work item, so every change has a recorded reason.
Comment resolution
Require that all review comments are resolved before merging, so no feedback is forgotten.
Letting people push straight to the main branch. One careless change can break the build for the whole team. Protect the main branch with policies from the very first day.
9The Pull Request Workflow
A pull request is the moment where teamwork, review and automation meet.
A pull request, often called a PR, is the standard way to propose a change. The author finishes work on a branch and opens a PR, which shows exactly what changed. Teammates read the changes, leave comments on specific lines, ask questions and suggest improvements. At the same time, automatic checks run in the background. When reviewers approve and the checks pass, the change is merged.
sequenceDiagram
participant D as Developer
participant R as Azure Repos
participant P as Pipeline
participant V as Reviewer
D->>R: Push branch and open pull request
R->>P: Trigger build validation
P-->>R: Report build and test results
R->>V: Request review
V-->>R: Comment or approve
D->>R: Update branch if needed
R->>R: Policies satisfied: complete merge
R->>P: Trigger main branch pipeline
A pull request is like handing a draft chapter to an editor before it goes to print. The editor reads it, marks questions in the margin, and a spell-checker runs automatically. Only after both agree does the chapter join the book.
Small changes are easier to review, less risky and merge faster. A pull request that changes thousands of lines is rarely reviewed well.
10Azure Pipelines: CI and CD in Plain Words
Pipelines automate building, testing and delivering software every time code changes.
Two abbreviations appear everywhere in DevOps. CI stands for continuous integration. It means that every time someone changes the code, the system automatically builds the program and runs tests, so problems are found within minutes. CD stands for continuous delivery or continuous deployment. In continuous delivery, every successful build is automatically prepared and ready to release, and a human approves the final step. In continuous deployment, the release to users happens automatically with no manual approval at all.
A build turns source code into a runnable form. A test is an automatic check that the program behaves correctly. A deployment places the built program onto servers or services where users can use it. Azure Pipelines performs all of these steps according to instructions that you write down as a pipeline.
Code change
A developer merges a change into the repository.
Build
The pipeline fetches the code and compiles or packages it.
Test
Automatic tests check that old features still work and new ones behave correctly.
Publish the package
The built result is saved as an artifact, a file or package ready to deploy.
Deploy
The artifact is released step by step to test, staging and production environments.
A pipeline is a factory assembly line. Raw parts, which are the code, enter at one end. Machines assemble, inspect and package them automatically, and the finished product arrives at the other end. If any inspection fails, the line stops and alerts the workers.
11Writing Pipelines as Code: YAML Structure
A pipeline is described in a text file stored with your code, so it can be reviewed and versioned.
Azure Pipelines lets you define a pipeline in a file written in a simple text format called YAML. The file lives in your repository next to the code. This idea is called pipeline as code. Because the pipeline is a file, changes to it go through pull requests, its history is recorded, and it can be copied to new projects easily. An older visual editor, called the classic editor, still exists, but YAML is the recommended path for new work.
A YAML pipeline has a clear set of nested building blocks.
Trigger
The rule that starts the pipeline, such as a push to the main branch, a pull request or a schedule.
Stage
A major phase of the pipeline, such as Build, Test or Deploy to production. Stages can run in order or in parallel.
Job
A group of steps that runs together on one machine. Jobs in a stage can run side by side to save time.
Step
A single action, such as running a script, installing a tool or publishing a result.
Task and template
A task is a ready-made step from a library. A template is a reusable piece of pipeline shared across many pipelines.
Variables and parameters
Named values that change behavior, such as an environment name, without rewriting the pipeline.
A YAML pipeline is like a written recipe. The trigger says when to cook. Stages are the courses of the meal, jobs are the cooks working at separate stations, and steps are the individual cooking actions. Templates are standard recipe cards used again and again.
When many projects need the same build steps, put them in a shared template. One fix then improves all pipelines at once, and teams avoid copying and drifting apart.
12Agents and Agent Pools: Who Runs the Work
An agent is a computer that actually carries out the steps of a pipeline.
A pipeline is only instructions. Something has to run them. That something is an agent, a machine with software that picks up jobs and runs them. Agents are grouped into pools. Azure Pipelines has two kinds of agents.
Microsoft-hosted agents
Virtual machines provided and maintained by Microsoft, available with various operating systems. Each job gets a fresh, clean machine that is thrown away afterwards. They need no maintenance, which makes them the easiest choice to start with.
Self-hosted agents
Machines that you provide and manage, either on your own premises or in your own cloud network. They are useful when the job must reach private systems, needs special software or hardware, or needs more control over speed and cost.
| Question | Microsoft-hosted | Self-hosted |
|---|---|---|
| Who maintains the machine | Microsoft | You |
| Clean machine for each job | Yes | Only if you arrange it |
| Access to private networks | Limited | Direct |
| Special tools or hardware | Limited to what is provided | Anything you install |
| Setup effort | Almost none | More work |
Microsoft-hosted agents are like renting a fully equipped, freshly cleaned kitchen by the hour. Self-hosted agents are like using your own kitchen, which you can fit exactly as you want but must clean and maintain yourself.
Running public or untrusted code, such as pull requests from strangers, on self-hosted agents that sit inside your private network. A malicious change could use the agent to reach internal systems. Keep such builds on isolated, disposable agents.
13Multi-Stage Deployments, Environments and Approvals
A release should climb through test environments, with safety checks before it reaches real users.
Releasing straight to production is risky. Mature teams promote the same built package through a series of environments, such as development, testing, staging and production. In Azure Pipelines, an environment is a named target that represents these places. It records deployments to it and can enforce approvals and checks before a deployment is allowed to proceed.
flowchart LR
C["Code merged"] --> B["Build and unit tests"]
B --> A["Artifact published"]
A --> D1["Deploy to Dev"]
D1 --> T["Automated tests"]
T --> D2["Deploy to Staging"]
D2 --> AP{"Manual approval"}
AP -- Approved --> D3["Deploy to Production"]
AP -- Rejected --> X["Stop and investigate"]
Manual approvals
Named people or groups must say “yes” before the deployment continues.
Business hours
Deployments are allowed only in chosen time windows, such as avoiding Friday evenings.
Automated gates
The pipeline queries a monitoring system or a service and continues only if health looks good.
Deployment strategies
Choose run-once, rolling, or canary styles, which update servers gradually and limit the impact of mistakes.
A key principle is build once, deploy many. The same tested package that went to staging is the one that goes to production, so you never rebuild and risk subtle differences. Only the settings, such as server names, change between environments.
Think of a new aircraft. It is tested on the ground, then on short test flights, then with trained crews, and only then carries passengers. The same aircraft passes through each stage, and each stage has a sign-off before the next one.
14Connecting to Azure Safely: Service Connections and Secrets
Pipelines need permission to deploy, and that permission must be handled with great care.
To deploy to Azure, a pipeline must prove its identity. Azure DevOps stores this connection as a service connection, a saved and protected link to an external service such as an Azure subscription, a container registry or a code host. Pipelines use the connection by name without ever seeing the underlying secret in plain text.
Prefer workload identity federation
Instead of storing a password or client secret, the pipeline receives short-lived trust from Microsoft Entra ID. There is no long-lived secret to leak or renew.
Scope the connection narrowly
Give the connection access to only the resource group or service it truly needs, not the whole subscription.
Use variable groups and Key Vault
Variable groups hold shared settings, and can read secrets straight from Azure Key Vault, so secrets stay in one protected place.
Mark secrets as secret
Secret variables are hidden in logs and must be passed explicitly to steps that need them.
Restrict who can use the connection
Require approval before a new pipeline can use a sensitive connection, and limit it to protected environments.
A service connection is like a company credit card kept in the finance office. Staff can ask for purchases through approved channels, but they never see or copy the card number. Federated identity is even better: it is like a temporary visitor pass that expires by itself.
Writing passwords or keys directly into pipeline files or source code. Once committed to history, they can be found by anyone with read access, even after deletion. Keep every secret in a vault or protected variable.
15Azure Artifacts: Sharing Packages
Artifacts gives your team a private, trusted library for packages and shared code.
Modern software is built from many reusable pieces called packages, which are bundles of code shared as a single unit. Your team may create its own packages, for example a logging library used by five applications, and also rely on public packages from the internet. Azure Artifacts hosts package feeds, which are private shelves where packages are published, stored and downloaded.
Many package types
Supports common formats including NuGet, npm, Maven, Python and universal packages for any files.
Upstream sources
A feed can pull public packages through itself and keep a copy, so builds keep working even if the public source is unavailable.
Versioning and views
Packages carry version numbers, and views such as pre-release and release help control which versions teams may use.
Permissions and retention
Control who can publish or read, and clean up old versions automatically.
Artifacts is a private parts warehouse. Your own team stores finished components there, with labels and version numbers, and also keeps approved copies of parts bought from outside suppliers, so production never stops because a supplier is closed.
Attackers sometimes publish public packages with names similar to your private ones. Using feeds with careful upstream settings and clear naming reduces this supply chain risk.
16Testing: Automated Tests and Azure Test Plans
Testing mixes fast automatic checks with careful human exploration.
Tests come in layers. The foundation is a large number of fast automatic tests, and on top are fewer, slower, more realistic ones.
Unit tests
Tiny automatic checks of small pieces of code. They run in seconds on every change.
Integration tests
Check that several parts work together, such as the program and its database.
End-to-end and performance tests
Simulate real user journeys and heavy load, and are usually run in a test environment.
Manual and exploratory tests
Humans try the product creatively, to find problems that scripted tests would miss.
Pipelines can run the automatic tests and publish the results and code coverage, which shows how much code the tests actually exercise. Azure Test Plans supports the human side. Testers write test cases, group them into plans and suites, run them step by step, record results and attach screenshots or bug reports. Exploratory testing tools let a tester record actions and file bugs linked directly to work items.
Automated tests are like a machine that checks every bottle on a production line for cracks, quickly and tirelessly. Manual testing is a skilled taster who samples the drink and notices flavors that the machine would never measure.
Relying only on slow manual testing just before release. Bugs are found late, fixes are rushed and release dates slip. Automate the repeatable checks and keep humans for exploration.
17Infrastructure as Code and Containers in Pipelines
Pipelines can also build the servers and environments that your software runs on.
Infrastructure as code means describing servers, networks and cloud services in files instead of clicking through a portal by hand. Tools such as Bicep, Azure Resource Manager templates and Terraform read these files and create the matching resources. Because the files live in a repository, changes to infrastructure are reviewed and tracked just like application code, and environments can be recreated exactly.
Pipelines also work with containers, which are lightweight packages that contain a program together with everything it needs to run. A typical pipeline builds a container image, scans it, pushes it to a container registry, and deploys it to a service such as Azure Kubernetes Service or Azure Container Apps.
Example: creating the same environment three times
A team describes its test, staging and production environments in one set of infrastructure files, with different settings for each. A pipeline applies the files, so all three environments are built the same way. When something differs between test and production, the team can find the cause in the files, not in memory.
Infrastructure as code is like keeping the architect’s blueprint for a building. You can rebuild the same building anywhere from the plan, and any change to the blueprint is reviewed before construction, instead of workers improvising on site.
Use a preview or plan step that shows what an infrastructure change will do, and require approval before applying it to production.
18Security in DevOps: DevSecOps
Security works best when it is built into every step instead of being added at the end.
DevSecOps adds security to the DevOps loop. Instead of a single security review before release, checks run automatically on every change, so problems are found early when they are cheap to fix.
Secret scanning
Looks for passwords and keys accidentally committed to code, and can block them before they are stored.
Dependency scanning
Finds known weaknesses in the packages your project uses.
Code scanning
Analyzes your own code for risky patterns, such as ways an attacker could inject harmful input.
Container scanning
Inspects container images for outdated or vulnerable components before they are deployed.
Protect the code
Use branch policies, required reviews and limited write access to repositories.
Protect the pipeline
Restrict who can edit pipelines and use sensitive connections, and use approvals for production.
Protect the identity
Use Entra ID sign-in, multi-factor authentication and conditional access. Avoid long-lived personal access tokens; prefer service principals or managed identities where possible.
Keep an audit trail
Use audit logs to see who changed permissions, pipelines and settings.
Microsoft offers advanced security scanning for Azure DevOps repositories as a separate capability. Product names, packaging and availability change, so confirm the current details in the official documentation.
19Measuring Success: Metrics and Continuous Improvement
DevOps improves what it measures, so choose a few meaningful numbers.
Teams often track four well-known measures, sometimes called the DORA metrics after the research program that studied them. They describe both speed and stability of delivery.
Deployment frequency
How often the team releases to production. More frequent, smaller releases are usually safer.
Lead time for changes
How long it takes from a code change being committed to running in production.
Change failure rate
The share of releases that cause problems needing a fix or rollback.
Time to restore service
How quickly the team recovers when something goes wrong in production.
Azure DevOps helps with other signals too: pipeline success rates and durations, test pass rates, code coverage, open bug counts and sprint burndown. Dashboards display them, and analytics connect to Power BI for deeper reports. Release pipelines can also connect to Azure Monitor and Application Insights, so teams see how a new version behaves in production and can roll back quickly if needed.
These numbers are like the dashboard of a car. Speed tells you how fast you are travelling, and warning lights tell you when something is wrong. A good driver watches both, and does not keep accelerating when a warning light is on.
Using metrics to blame or rank individuals. People then game the numbers and hide problems. Use metrics to find system bottlenecks and improve together.
20Azure DevOps and GitHub
Microsoft offers both Azure DevOps and GitHub, and many teams use them together.
GitHub, which is also owned by Microsoft, provides repositories, pull requests, issue tracking and its own automation called GitHub Actions. This leads to a common question: which one should we use? The answer depends on your team, and many organizations combine them. For example, code may live in GitHub while Azure Boards tracks work and Azure Pipelines builds and deploys.
| Area | Azure DevOps | GitHub |
|---|---|---|
| Planning | Azure Boards with rich backlogs, sprints and reports | Issues and Projects, simpler by design |
| Source control | Azure Repos for Git, with branch policies | Git hosting with a very large public community |
| Automation | Azure Pipelines using YAML or classic editor | GitHub Actions with a large marketplace |
| Testing | Azure Test Plans for manual testing | Relies on partner tools |
| Packages | Azure Artifacts | GitHub Packages |
| Typical fit | Enterprises wanting integrated, governed process tools | Open source and teams wanting a community-centered workflow |
Microsoft continues to evolve both products, with strong investment in GitHub. Before starting a large new initiative, check the current roadmap and guidance, and choose the tools that match your team’s habits, rules and existing investments.
Azure Pipelines can build code stored in GitHub, and Azure Boards can link to GitHub commits and pull requests. You do not need to move everything at once.
21Understanding the Cost
Azure DevOps is billed mainly by users and by how much pipeline capacity you use.
Pricing for Azure DevOps Services follows a few simple ideas. A small number of users, usually the first five, can use the Basic features free of charge, and Stakeholders can always participate in a limited way at no cost. Additional Basic users are charged per month. Azure Test Plans is an add-on that is charged per user. For Azure Pipelines, you pay for parallel jobs, which determine how many pipeline jobs can run at the same time, and you may receive a free allowance. Azure Artifacts gives a free amount of storage, and charges for storage above it. Free allowances and prices change, and new organizations may need to request free parallel jobs, so always check the official pricing page.
Match access levels to need
Give occasional contributors the free Stakeholder level where it is enough, and review user lists regularly.
Speed up pipelines
Use caching and run independent jobs in parallel, so you use fewer pipeline minutes and wait less.
Clean old artifacts
Set retention rules for old builds and package versions to reduce storage charges.
Consider self-hosted agents wisely
They can reduce cost for heavy workloads but add maintenance work, so compare the total effort.
Pipelines that deploy to Azure also create costs for the resources they build, such as test environments. Add automatic cleanup for temporary environments so they do not keep running unnoticed.
22Best Practices and Mistakes to Avoid
Habits that experienced teams follow, and traps that beginners often fall into.
Protect the main branch
Require pull requests, reviews and a passing build before any change is merged.
Define pipelines as code
Keep YAML pipelines in the repository, review changes to them and reuse templates.
Build once, deploy many
Promote the same tested package through environments, with approvals for production.
Keep secrets out of code
Use federated identity, Key Vault and protected variables, and scan for leaked secrets.
Keep changes small and feedback fast
Small pull requests and quick pipelines let the team learn and fix problems within minutes.
Problem
Developers push changes directly to the main branch, and a manual deployment is done from a laptop each month.
Why It’s Harmful
Unreviewed code reaches production, deployments depend on one person’s setup, and failures are hard to trace or repeat.
Correct Approach
Protect the main branch with policies, and deploy only through an automated pipeline with approvals and a recorded history.
Problem
A pipeline rebuilds the application separately for each environment, and secrets are typed directly into the pipeline file.
Why It’s Harmful
The version tested in staging is not the exact version released to production, and the exposed secrets can leak through the repository history.
Correct Approach
Build one artifact, promote it through environments with only the settings changing, and keep secrets in Key Vault or protected variables.
Problem
The pipeline takes ninety minutes to run, often fails for unrelated reasons, and the team learns to ignore red builds.
Why It’s Harmful
Slow and unreliable pipelines destroy trust. Real failures are missed, and people start merging changes without waiting for results.
Correct Approach
Make pipelines fast with caching and parallel jobs, remove flaky tests, and treat a failing build as a top priority for the whole team.
23Real-World Examples
Seeing how organizations use Azure DevOps makes the ideas easier to remember.
A small software company moving off manual releases
A small team that used to copy files to a server every Friday sets up Azure Repos with branch policies and an Azure Pipelines YAML file. Every merge builds and tests automatically, and a deployment to a staging site follows. After a few weeks, they release several times a week with far fewer weekend emergencies.
A bank with strict approvals
A bank uses multi-stage pipelines in which the same package moves from development to testing to production. Production deployment needs approval from both the product owner and a security officer, uses a locked-down service connection, and every change is traceable through linked work items for auditors.
A retail company with many teams
A retailer has thirty teams sharing common build and security steps through pipeline templates. A central platform team maintains the templates, so improving a security check reaches every project at once. Delivery Plans give leaders a single view of upcoming features.
A software product publishing shared libraries
A company builds internal libraries used by many applications. Pipelines test and publish them to Azure Artifacts with version numbers. Teams upgrade at their own pace, and a feed with upstream sources keeps builds working even when public package sites are unavailable.
A cloud team creating environments with code
A platform team keeps Bicep files in a repository and uses a pipeline to create test and production environments. Each infrastructure change goes through a pull request and an approval, so no one changes production resources by hand.
24Frequently Asked Questions
No. Azure DevOps works with many languages, frameworks and clouds. You can build and deploy applications written in Java, Python, JavaScript, .NET and more, and deploy to other clouds or on-premises servers, although it integrates especially well with Azure.
No. The services work independently. Many teams use only Pipelines with code in GitHub, or only Boards for planning. Use the parts that solve your real problems.
Continuous integration automatically builds and tests every change soon after it is made. Continuous delivery automatically prepares every successful build for release, with a human approving the final step, and continuous deployment goes further by releasing automatically with no manual approval.
YAML pipelines are the recommended approach for new work because they live with your code, can be reviewed and versioned, and are easy to reuse with templates. The classic editor remains available for older pipelines.
Microsoft-hosted agents are maintained by Microsoft and give each job a clean machine. Self-hosted agents run on machines you control, which allows access to private networks and special tools, but you must maintain them.
Never put secrets in code or pipeline files. Use federated identity where possible so no long-lived secret exists, keep secrets in Azure Key Vault or protected variables, limit who can use each service connection and turn on secret scanning.
Both products continue to exist and are used together by many organizations. Microsoft invests heavily in GitHub, so check the current roadmap and guidance before making a long-term choice, and remember that you can mix the two.
Create an organization and a project, add your code to a repository, protect the main branch with a pull request policy, write a simple pipeline that builds and tests the code, and track your tasks on a board. Then add stages, approvals and security checks step by step.
25Summary and Key Takeaways
Azure DevOps connects every step of building software, from the first idea to the live product. Boards plan and track the work, Repos keep the code and its history with pull requests and policies, Pipelines build, test and deliver automatically, Test Plans support human testing and Artifacts share packages. You have seen how organizations, projects and permissions are arranged, how branching and reviews protect quality, how YAML pipelines, agents, environments and approvals form a safe release path, and how service connections, Key Vault and security scanning protect secrets and code. You have also learned how metrics guide improvement, how Azure DevOps relates to GitHub, and how costs are controlled.
The best way to begin is small: protect the main branch, add a simple automated build and test, track work on a board, and release a little at a time. Then add stages, approvals, security checks and measurements as your confidence grows. DevOps is less about tools than about teamwork, fast feedback and steady improvement, and Azure DevOps gives your team a strong place to practice it.
Key Takeaways
- Five connected services — Boards, Repos, Pipelines, Test Plans and Artifacts cover planning, code, automation, testing and package sharing, and can be used together or alone.
- Protect the main branch — use pull requests, reviews, linked work items and build validation so only checked code is merged.
- Pipelines as code — YAML pipelines with stages, jobs and steps are versioned, reviewed and reusable through templates.
- Build once, deploy many — promote one tested artifact through environments, with approvals and checks before production.
- Keep secrets safe — prefer federated identity, Key Vault and protected variables, and never place secrets in code.
- Build security in — scan for secrets, dependencies, code and container problems on every change, and keep audit trails.
- Measure and improve — watch deployment frequency, lead time, failure rate and recovery time, and use them to improve the system, not to blame people.