Azure DevOps Setup: Boards, Repos, Pipelines, Artifacts

When a team moves to Azure DevOps from disparate tools, the question arises: how to configure the platform to fit your processes rather than adapt to standard templates. We configure Azure DevOps turnkey: Boards, Repos, Pipelines, and Artifacts, tailored to your organization's structure and team specifics. Our team of experts handles the entire cycle and ensures stable operation with ongoing support.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1365
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Teams moving from Jira + GitHub + Jenkins to Azure DevOps often expect everything to work out of the box. But "all in one place" doesn't mean it configures itself—setting up Boards, Repos, Pipelines, and Artifacts to match your team's processes takes expertise and architectural understanding. Our engineers have 10+ years of DevOps experience and have successfully completed over 50 migration projects to Azure DevOps. We guarantee a smooth transition and optimal configuration for your specific needs.

Structure: Organization, Project, Team

Organization — the top level, analogous to a "company" in Jira. One URL like dev.azure.com/mycompany. Billing, security policies, users—all at the Organization level.

Project — the main working unit. Contains Boards, Repos, Pipelines, Artifacts, and Test Plans. Different products should have separate projects, not all crammed into one. Mixing unrelated teams in a single project is a common mistake difficult to fix later—work items, tasks, and pipelines start interfering.

Team — a subset of a project with its own Boards, Sprint Backlog, and settings. One Project can contain multiple Teams (frontend-team, backend-team, devops-team).

Boards: Agile, Scrum, or CMMI

When creating a project, you choose a process template. For most teams—Scrum (with Sprint Backlogs, Velocity, and Burndown) or Agile (more flexible, with User Stories and Tasks). CMMI is for formal processes with change requests and approval workflows.

Team-specific configuration:

Process → Work Item Types → add custom fields
Board → Column settings → set WIP limits
Sprints → create sprints with dates
Area Paths → structure by component (backend, frontend, infra)
Iteration Paths → sprint hierarchy (Q1 → Sprint 1, Sprint 2)

Area Paths — especially important for filtering: each Team works with its own Area, keeping their Boards separate.

How to Set Up Branch Policies in Azure Repos?

Azure Repos supports Git (and legacy TFVC, which we advise against using). The key configuration is Branch Policies on main:

  • Minimum number of reviewers: 2 (for production code)
  • Check for linked work items: mandatory association of PR with a task in Boards
  • Check for comment resolution: no merge without resolved comments
  • Build validation: automatic pipeline trigger on every PR
# Policy via Azure CLI az repos policy approver-count create \
  --allow-downvotes false \
  --blocking true \
  --branch main \
  --creator-vote-counts false \
  --enabled true \
  --minimum-approver-count 2 \
  --project myproject \
  --repository-id <repo-id>

What to Choose: YAML or Classic Pipelines?

Classic pipelines (via UI) are deprecated. For new projects we always use YAML pipelines, stored in the repository as azure-pipelines.yml. This enables code review for pipelines, change history, and template reuse. More about the YAML schema can be found in the official documentation.

Parameter Classic Pipelines YAML Pipelines
Storage In Azure DevOps UI In repository (azure-pipelines.yml)
Code review No Yes, via PR
Change history No In Git history
Templates support No Yes

Basic YAML structure:

trigger:
  branches:
    include:
      - main
      - develop
pool:
  vmImage: ubuntu-latest
stages:
  - stage: Build
    jobs:
      - job: BuildJob
        steps:
          - task: Docker@2
            inputs:
              command: buildAndPush
              repository: myapp
              containerRegistry: myacr-connection
              tags: |
                $(Build.BuildId)
                latest
  - stage: Deploy
    dependsOn: Build
    condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
    jobs:
      - deployment: DeployProd
        environment: production
        strategy:
          runOnce:
            deploy:
              steps:
                - task: HelmDeploy@0
                  inputs:
                    command: upgrade
                    chartName: myapp
                    releaseName: myapp-prod

Environments and Approvals in Pipelines

Under Pipelines → Environments, create an environment named production. Configure Approvals and checks:

  • Approvals: a list of people, any one of whom must approve the deployment
  • Business hours check: deploy allowed only during working hours (e.g., Mon-Fri 09:00-18:00)
  • Exclusive lock: only one deployment to this environment at a time

Case: For a fintech client, we replaced a legacy Jenkins pipeline with a multi-stage YAML pipeline, cutting deployment time from 30 minutes to 5 minutes and enabling automated rollback on failure. This was achieved by parallelizing build stages and using deployment slots with immediate swap.

Artifacts: Internal Package Registry

Azure Artifacts creates private feeds for npm, NuGet, Maven, Python, and Universal Packages. Your team publishes internal libraries to Artifacts rather than public npm/PyPI.

---
# Publishing an npm package to an Artifacts feed
- task: Npm@1
  inputs:
    command: publish
    publishRegistry: useFeed
    publishFeed: myorg/myfeed

Upstream sources allow proxying public registries through the Artifacts feed—so npm install goes through the internal proxy, caching packages and controlling access to external dependencies.

Service Connections: Cloud Integrations

To deploy to Azure, AWS, GCP, or Kubernetes, you need Service Connections—a secure storage of credentials accessible to pipelines without hardcoded secrets. Configured in Project Settings → Service Connections.

For Azure Kubernetes Service — a Kubernetes-type Service Connection with kubeconfig or a service account. For Azure Container Registry — an ACR service connection with automatic OAuth. For AWS — an AWS Credentials connection with an IAM role.

What's Included in Azure DevOps Setup?

Component What We Do Result
Organization & Project Create structure, configure security, policies Ready-to-use project with areas and iterations
Boards Choose template, set WIP limits, sprints Functional board with backlog and board
Repos Import code, set branch policies, CI triggers Repository with protected main and automatic checks
Pipelines Write YAML pipelines, configure stages and environments CI/CD from commit to production with approvals
Artifacts Create feeds, set up upstream sources Private registry for internal packages
Service Connections Connect clouds, container registries Secure access without secrets in code

Timelines

Basic setup of a new project (Boards, Repos with branch policies, one Pipeline) — 1 day. Full configuration of an organization with multiple projects, Artifacts feed, Environments with approvals, and AKS integration — 2-3 days. Migration from Jira + GitHub + Jenkins requires a separate assessment. Cost is calculated individually. Contact us for a consultation and precise timelines for your project. Order Azure DevOps setup from us—we guarantee quality and post-implementation support.