Back to HomeDevOps

Azure DevOps Tutorial: Complete Guide from Beginner to Practice [2025]

14 min min read
#Azure DevOps#Azure Pipelines#Azure Repos#Azure Boards#CI/CD#Microsoft#DevOps Tools#YAML Pipeline#Git#Project Management

Azure DevOps Tutorial: Complete Guide from Beginner to Practice [2025]

If your company uses the Microsoft technology stack, Azure DevOps is almost certainly the first choice.

It integrates version control, CI/CD, project management, test management, and package management all together. No need to piece together different tools—one platform handles everything.

But more features also means a steeper learning curve. Many people are overwhelmed the first time they open Azure DevOps.

This tutorial will guide you step by step to create your first Azure DevOps project and CI/CD Pipeline from scratch.

Illustration 1: Azure DevOps Services Overview

What is Azure DevOps?

Azure DevOps is Microsoft's all-in-one DevOps platform.

Its predecessor was Visual Studio Team Services (VSTS), renamed to Azure DevOps in 2018 with significantly enhanced features.

Core Positioning:

  • Provides complete software development lifecycle management
  • Supports any language, any platform (not just .NET)
  • Seamlessly integrates with Azure cloud services
  • Available in both cloud and on-premise (Server) versions

To understand the complete DevOps concept, you can first read What is DevOps? 2025 Complete Guide.

Advantages of Azure DevOps

Why choose Azure DevOps?

AdvantageDescription
High IntegrationFive services tightly integrated, no need to connect multiple tools
Microsoft EcosystemPerfect fit with Visual Studio, VS Code, Azure
Enterprise FeaturesPermission management, audit logs, compliance support
Flexible LicensingFree for small teams, pay-as-you-go
Multi-platform SupportNot just Windows, also supports Linux, macOS

Suitable Use Cases:

  • Teams already using Microsoft technology stack
  • Need to integrate project management and development workflows
  • Projects deploying to Azure cloud
  • Organizations requiring enterprise-grade security and compliance

Five Core Azure DevOps Services

Azure DevOps includes five core services, each can be used independently or together.

Azure Boards (Project Management)

Purpose: Work item tracking, agile project management

Main Features:

  • Work Items: Track tasks, bugs, user stories
  • Boards: Kanban-style visual management
  • Backlogs: Product backlog management
  • Sprints: Sprint planning and burndown charts
  • Queries: Custom queries and reports

Supported Process Templates:

  • Agile
  • Scrum
  • CMMI
  • Basic

Best For: Product managers, Scrum Masters, development teams

Azure Repos (Version Control)

Purpose: Code version control and collaboration

Main Features:

  • Git Repositories: Unlimited private Git repos
  • Pull Requests: Code review workflow
  • Branch Policies: Branch protection rules
  • Code Search: Cross-repository code search

Highlights:

  • Supports Git and TFVC (Team Foundation Version Control)
  • Deep integration with Visual Studio
  • Built-in code review tools

Best For: Developers, Tech Leads

Azure Pipelines (CI/CD)

Purpose: Continuous Integration and Continuous Deployment

Main Features:

  • Build Pipelines: Automated code builds
  • Release Pipelines: Automated deployment to environments
  • YAML Pipelines: Pipeline as Code
  • Environments: Environment management and approvals
  • Deployment Gates: Deployment gate controls

Supported Platforms:

  • Windows, Linux, macOS
  • Any language (.NET, Java, Node.js, Python...)
  • Containers, Kubernetes, Serverless

Best For: DevOps engineers, developers

Azure Test Plans (Test Management)

Purpose: Test case management and execution

Main Features:

  • Test Plans: Test plan management
  • Test Suites: Test suite organization
  • Manual Testing: Manual test execution
  • Exploratory Testing: Exploratory testing
  • Test Analytics: Test result analysis

Best For: QA engineers, test teams

Azure Artifacts (Package Management)

Purpose: Package storage and management

Main Features:

  • Package Feeds: Private package repositories
  • Multi-format Support: NuGet, npm, Maven, Python, Universal

Best For: Developers, architects


Azure DevOps Pricing Plans

Free Plan

Azure DevOps is very friendly to small teams:

ItemFree Allowance
UsersFirst 5 free (Basic)
StakeholdersUnlimited free
Private ProjectsUnlimited
Git ReposUnlimited
CI/CD Minutes1,800 min/month (Microsoft-hosted)
Artifacts Storage2 GB

Stakeholder vs Basic:

  • Stakeholder: Can view work items, dashboards, but cannot use Repos, Pipelines
  • Basic: Full feature access

Paid Plans

Billing beyond free allowance:

ItemPrice (USD)
Additional Basic Users$6/user/month
Basic + Test Plans$52/user/month
Additional CI/CD Parallel Jobs$40/job/month
Additional Artifacts Storage$2/GB/month

Plan Selection Recommendations

Team SizeRecommended Plan
1-5 peopleFree plan is sufficient
6-20 peopleBasic plan
20+ peopleBasic + consider Test Plans
EnterpriseAzure DevOps Server (on-premise)

Not sure which plan to choose?

Azure DevOps billing model is somewhat complex, especially the calculation of CI/CD parallel jobs. Choosing the wrong plan could waste money.

Schedule an architecture consultation and let us help you evaluate requirements and costs.


Azure DevOps Getting Started Setup

Step 1: Create an Organization

What is an Organization?

An Organization is the highest level in Azure DevOps, typically corresponding to a company or department.

Creation Steps:

  1. Go to Azure DevOps
  2. Sign in with your Microsoft account (or create a new one)
  3. Click "Create new organization"
  4. Enter organization name (e.g., your-company)
  5. Select data storage region (recommend choosing closest to you)
  6. Complete creation

Organization Naming Suggestions:

  • Use company name or abbreviation
  • All lowercase, use hyphens to separate
  • Examples: cloudinsight, my-company

Step 2: Create a Project

What is a Project?

A Project is a workspace under an Organization, typically corresponding to a product or system.

Creation Steps:

  1. Click "New Project" on the organization homepage
  2. Enter project name
  3. Select visibility:
    • Private: Only team members can access
    • Public: Anyone can view (suitable for open source projects)
  4. Select version control: Git (recommended) or TFVC
  5. Select work item process: Agile, Scrum, CMMI, Basic
  6. Click "Create"

Project Naming Suggestions:

  • Use product or system name
  • Examples: web-frontend, api-service, mobile-app

Step 3: Set Up Repository

Initialize Repository:

  1. Enter the project, click "Repos" in the left menu
  2. Select "Initialize" to initialize an empty Repository
  3. Optionally add README and .gitignore

Clone to Local:

# HTTPS method
git clone https://dev.azure.com/your-org/your-project/_git/your-repo

# SSH method (need to set up SSH Key first)
git clone [email protected]:v3/your-org/your-project/your-repo

Set Up Git Authentication:

  1. Go to "User Settings" → "Personal Access Tokens"
  2. Create a new PAT (Personal Access Token)
  3. Set appropriate permission scope
  4. Use PAT as password for Git operations

Step 4: Invite Team Members

Add Members:

  1. Go to "Project Settings" → "Teams"
  2. Select the default team or create a new team
  3. Click "Add" to add members
  4. Enter member's Email or Microsoft account
  5. Set access level (Basic or Stakeholder)

Permission Setting Suggestions:

  • Developers: Basic access level
  • Product Managers/Clients: Stakeholder access level
  • Administrators: Project Administrator role

Illustration 2: Azure DevOps Project Setup Flow

Azure Pipelines Build Tutorial

Pipeline Type Selection

Azure Pipelines supports two definition methods:

TypeDescriptionSuitable Scenarios
YAML PipelineDefine Pipeline with codeNew projects, need version control
Classic PipelineConfigure Pipeline with GUIQuick testing, unfamiliar with YAML

2025 Recommendation: Prioritize YAML Pipeline.

Why?

  • Pipeline configuration can be version controlled
  • Can be Code Reviewed
  • Can be reused across different projects
  • Easier to maintain and debug

Create Your First YAML Pipeline

Step 1: Create Pipeline File

Create azure-pipelines.yml in the Repository root:

# azure-pipelines.yml
trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

stages:
  - stage: Build
    displayName: 'Build Stage'
    jobs:
      - job: BuildJob
        displayName: 'Build'
        steps:
          - script: echo 'Hello, Azure Pipelines!'
            displayName: 'Run a one-line script'

          - script: |
              echo 'Building the project...'
              echo 'Build completed!'
            displayName: 'Run a multi-line script'

Step 2: Create Pipeline in Azure DevOps

  1. Enter the project, click "Pipelines" → "Create Pipeline"
  2. Select code source: Azure Repos Git
  3. Select Repository
  4. Select "Existing Azure Pipelines YAML file"
  5. Select /azure-pipelines.yml
  6. Click "Run" to execute

YAML Pipeline Basic Structure

# Trigger conditions
trigger:
  branches:
    include:
      - main
      - develop
  paths:
    exclude:
      - docs/*

# Scheduled execution (optional)
schedules:
  - cron: '0 0 * * *'
    displayName: 'Daily midnight build'
    branches:
      include:
        - main

# Execution environment
pool:
  vmImage: 'ubuntu-latest'

# Variables
variables:
  buildConfiguration: 'Release'
  nodeVersion: '18.x'

# Stages
stages:
  - stage: Build
    jobs:
      - job: BuildJob
        steps:
          - task: NodeTool@0
            inputs:
              versionSpec: '$(nodeVersion)'
          - script: npm install
          - script: npm run build

  - stage: Test
    dependsOn: Build
    jobs:
      - job: TestJob
        steps:
          - script: npm test

  - stage: Deploy
    dependsOn: Test
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
    jobs:
      - deployment: DeployJob
        environment: 'production'
        strategy:
          runOnce:
            deploy:
              steps:
                - script: echo 'Deploying to production...'

Common Tasks

Node.js Project:

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: '18.x'
    displayName: 'Install Node.js'

  - script: npm ci
    displayName: 'Install dependencies'

  - script: npm run build
    displayName: 'Build'

  - script: npm test
    displayName: 'Run tests'

Docker Build:

steps:
  - task: Docker@2
    inputs:
      containerRegistry: 'your-registry'
      repository: 'your-repo'
      command: 'buildAndPush'
      Dockerfile: '**/Dockerfile'
      tags: |
        $(Build.BuildId)
        latest

.NET Project:

steps:
  - task: DotNetCoreCLI@2
    inputs:
      command: 'restore'
      projects: '**/*.csproj'

  - task: DotNetCoreCLI@2
    inputs:
      command: 'build'
      projects: '**/*.csproj'
      arguments: '--configuration $(buildConfiguration)'

  - task: DotNetCoreCLI@2
    inputs:
      command: 'test'
      projects: '**/*Tests.csproj'

For a deeper understanding of CI/CD concepts, see CI/CD Beginner Tutorial.


Azure Pipelines Advanced Configuration

Multi-Environment Deployment

stages:
  - stage: DeployDev
    displayName: 'Deploy to Dev'
    jobs:
      - deployment: DeployDev
        environment: 'dev'
        strategy:
          runOnce:
            deploy:
              steps:
                - script: echo 'Deploying to Dev...'

  - stage: DeployStaging
    displayName: 'Deploy to Staging'
    dependsOn: DeployDev
    jobs:
      - deployment: DeployStaging
        environment: 'staging'
        strategy:
          runOnce:
            deploy:
              steps:
                - script: echo 'Deploying to Staging...'

  - stage: DeployProd
    displayName: 'Deploy to Production'
    dependsOn: DeployStaging
    jobs:
      - deployment: DeployProd
        environment: 'production'
        strategy:
          runOnce:
            deploy:
              steps:
                - script: echo 'Deploying to Production...'

Environment Approval Setup

Setting Up Approval Gates:

  1. Go to "Pipelines" → "Environments"
  2. Select environment (e.g., production)
  3. Click "Approvals and checks"
  4. Add "Approvals"
  5. Specify approvers

This way, deployment to that environment requires approval from designated personnel.

Variables and Secrets Management

Pipeline Variables:

variables:
  - name: environment
    value: 'production'
  - name: region
    value: 'eastasia'

Variable Groups:

  1. Go to "Pipelines" → "Library"
  2. Create Variable Group
  3. Add variables (can mark as Secret)
  4. Reference in Pipeline:
variables:
  - group: 'my-variable-group'

Azure Key Vault Integration:

variables:
  - group: 'my-keyvault-group'

steps:
  - task: AzureKeyVault@2
    inputs:
      azureSubscription: 'your-subscription'
      KeyVaultName: 'your-keyvault'
      SecretsFilter: '*'

Parallel Jobs and Matrix Builds

Matrix Build (Multi-Version Testing):

strategy:
  matrix:
    Node16:
      nodeVersion: '16.x'
    Node18:
      nodeVersion: '18.x'
    Node20:
      nodeVersion: '20.x'

steps:
  - task: NodeTool@0
    inputs:
      versionSpec: '$(nodeVersion)'
  - script: npm test

Pipeline configuration too complex?

Azure Pipelines is powerful, but has many configuration options. Especially multi-environment deployment, permission control, and integration with Azure services—first-time setup can easily hit pitfalls.

Schedule an architecture consultation and let experienced engineers help you design the optimal CI/CD workflow.


Integration with Azure Services

Deploy to Azure App Service

- task: AzureWebApp@1
  inputs:
    azureSubscription: 'your-subscription'
    appType: 'webAppLinux'
    appName: 'your-app-name'
    package: '$(Pipeline.Workspace)/drop/*.zip'

Deploy to Azure Kubernetes Service (AKS)

- task: KubernetesManifest@0
  inputs:
    action: 'deploy'
    kubernetesServiceConnection: 'your-aks-connection'
    namespace: 'default'
    manifests: |
      manifests/deployment.yaml
      manifests/service.yaml
    containers: |
      your-registry.azurecr.io/your-image:$(Build.BuildId)

Deploy to Azure Functions

- task: AzureFunctionApp@1
  inputs:
    azureSubscription: 'your-subscription'
    appType: 'functionAppLinux'
    appName: 'your-function-app'
    package: '$(Pipeline.Workspace)/drop/*.zip'

Illustration 3: Azure DevOps and Azure Services Integration

Azure DevOps vs GitHub Actions

Both are Microsoft's CI/CD tools—how do you choose?

Feature Comparison

FeatureAzure DevOpsGitHub Actions
Version ControlAzure ReposGitHub
CI/CDAzure PipelinesGitHub Actions
Project ManagementAzure BoardsGitHub Issues/Projects
Package ManagementAzure ArtifactsGitHub Packages
Test ManagementAzure Test PlansThird-party integration
Free CI/CD Minutes1,800/month2,000/month (public), 500/month (private)
Self-hosted RunnerSupportedSupported

Selection Recommendations

Choose Azure DevOps if:

  • Using Microsoft technology stack (.NET, Azure)
  • Need complete project management features
  • Need Test Plans for test management
  • Enterprise-grade security and compliance requirements
  • Team is already familiar with Azure DevOps

Choose GitHub Actions if:

  • Code is already on GitHub
  • Open source projects
  • Want simpler setup
  • Rich community Actions ecosystem
  • Small team or personal projects

Using Both Together:

You can also use both:

  • Code on GitHub
  • Use Azure Pipelines for CI/CD
  • Use Azure Boards for project management
# Azure Pipeline can connect to GitHub Repository
resources:
  repositories:
    - repository: MyGitHubRepo
      type: github
      endpoint: MyGitHubConnection
      name: your-org/your-repo

For more tool comparisons, see DevOps Tools Complete Guide.


Azure DevOps Server vs Cloud

Comparison

ItemAzure DevOps Services (Cloud)Azure DevOps Server (On-premise)
DeploymentMicrosoft hostedSelf-install and maintain
Update FrequencyAuto-updates every 3 weeksManual upgrades
ScalabilityAuto-scalesSelf-planning required
Data StorageMicrosoft data centersOwn data center
CostPay-as-you-goLicense fee + hardware cost
ComplianceISO, SOC, GDPR, etc.Full control

Selection Recommendations

Choose Cloud (Services) if:

  • Don't want to maintain infrastructure
  • Need latest features
  • Team is geographically distributed
  • Limited budget

Choose On-premise (Server) if:

  • Data must stay within enterprise
  • Special compliance requirements
  • Network environment is restricted
  • Already invested in data center

FAQ

Is Azure DevOps Free Allowance Enough?

For small teams of 5 or fewer, usually enough.

Main limitations are:

  • CI/CD minutes: 1,800 min/month
  • Parallel jobs: 1

If Pipeline runs frequently or takes long, you may need to purchase additional minutes or self-host Agents.

Can I Use Only Azure Pipelines?

Yes.

Azure DevOps's five services can be used independently. You can:

  • Put code on GitHub
  • Only use Azure Pipelines for CI/CD
  • Use Jira for project management

What Languages Does Azure DevOps Support?

Almost all languages:

  • .NET / C#
  • Java
  • Node.js / JavaScript
  • Python
  • Go
  • PHP
  • Ruby
  • And more...

How to Migrate from Other Platforms?

Azure DevOps provides migration tools:

  • From Jenkins: Can export Pipeline configuration for reference
  • From GitLab: Can import Repository
  • From Jira: Can import work items

How to Learn Azure DevOps?

Recommended learning resources:

  • Microsoft Learn official courses (free)
  • Azure DevOps Labs (hands-on practice)
  • AZ-400 certification courses

For a complete learning plan, see DevOps Learning Roadmap 2025.

Illustration 4: Azure DevOps Pipeline Execution Screen

Conclusion

Azure DevOps is a fully-featured DevOps platform.

Its Advantages:

  • Five services highly integrated
  • Seamlessly paired with Azure cloud
  • Complete enterprise features
  • Free for small teams

Its Disadvantages:

  • Steeper learning curve
  • High interface complexity
  • Some settings not intuitive

If your team uses Microsoft technology stack, or needs an all-in-one DevOps solution, Azure DevOps is an excellent choice.

Recommended learning order:

  1. First get familiar with Azure Repos (version control)
  2. Learn Azure Pipelines (CI/CD)
  3. Learn Boards, Artifacts, Test Plans as needed

Need Professional Help?

According to Microsoft statistics, teams adopting Azure DevOps can increase deployment frequency by more than 3x on average.

How CloudInsight Can Help

  • Azure DevOps Adoption Planning: Design adoption strategy from scratch
  • Pipeline Architecture Design: Design CI/CD workflows that fit your team
  • Azure Integration Consulting: Best integration methods with Azure cloud services
  • Team Training: Azure DevOps hands-on training courses

Schedule a Free Consultation Now

Want to adopt Azure DevOps in your team but not sure how to start?

👉 Schedule an architecture consultation—we provide complete adoption planning and training services


Further Reading:


References

  1. Microsoft, "Azure DevOps Official Documentation"
  2. Microsoft Learn, "AZ-400: Designing and Implementing Microsoft DevOps Solutions"
  3. Azure DevOps Labs, Official hands-on exercises
  4. Microsoft, "Azure Pipelines YAML Schema"
  5. Microsoft, "Azure DevOps Pricing Documentation"

Need Professional Cloud Advice?

Whether you're evaluating cloud platforms, optimizing existing architecture, or looking for cost-saving solutions, we can help

Book Free Consultation

Related Articles