Before diving into best practices, let’s establish what we’re working with. Azure DevOps comprises five main services, each tackling a different aspect of your development lifecycle. They can be used individually or integrated together.
Azure Repos: Your code’s secure home
Azure Repos provides Git repositories for source control. You get unlimited private Git repos, deep integration with the rest of Azure DevOps, and the ability to link commits directly to work items. The service supports both TFVC and Git, though Git is strongly recommended for new projects.
The pull request experience in Azure Repos is a strong one. You can set up branch policies that enforce code reviews, require successful builds, and mandate specific reviewers for critical code paths. It lets you make sure bad code doesn’t just waltz into your main branch uninvited.
Azure Boards: Where work gets organised
Azure Boards is your project management hub where user stories become tasks, bugs get tracked, and sprints get planned. It supports Agile, Scrum, and CMMI processes out of the box, though you can customise these to match your team’s workflow.
You can view work through Kanban boards, backlogs, sprints, or queries. Each team member can have personalised dashboards, while project managers get the bird’s-eye view they need. The capacity planning features help you track burndown and identify bottlenecks before they become problems.
Azure Pipelines: Automating processes
Azure Pipelines automates your build, test, and deployment processes. It works with pretty much any language, platform, or cloud provider. The service offers both classic pipelines (UI-configured) and YAML pipelines (defined as code), though YAML pipelines are recommended for most scenarios as they’re version-controlled and easier to manage at scale.
You can set up multi-stage pipelines, implement approval gates, and integrate with external services. The parallel job execution speeds up builds, and the extensive marketplace means you rarely need custom scripts for common operations.
Azure Artifacts: Managing dependencies
Azure Artifacts gives your team a secure place to share code libraries, hosting multiple package types including NuGet, npm, Maven, Python, and Universal. The upstream sources feature lets you proxy public registries, speeding up builds and providing resilience against outages. Package promotion helps make sure that only tested packages reach production, while retention policies manage storage costs automatically.
Azure Test Plans: Testing with confidence
Azure Test Plans provides tools for manual, exploratory, and user acceptance testing, integrated with automated tests from Azure Pipelines. Testers can execute test cases step-by-step (across web and desktop) while capturing issues with full reproduction information. As well as this, the exploratory testing browser extension turns ad-hoc testing into actionable feedback. Comprehensive reporting helps you track test results over time and identify flaky tests.