Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
8 posts found #azure-pipelines
Migrating from Classic Release Pipelines to YAML and What Changed in Azure Pipelines from 2023 to 2026
DevOps PART 09

Migrating from Classic Release Pipelines to YAML and What Changed in Azure Pipelines from 2023 to 2026

Classic release pipelines can't be exported to YAML; builds start from Export to YAML, while releases are rebuilt by hand with stages, checks and templates. For Bookstore we turn a task group into a step template and redeploying an old release into a pipeline with a pipeline resource, disable classic creation, and collect the 2023–2026 changes, the roadmap and the decision to stay on Azure DevOps, with dates.

15 Nov 2026 10 min 7
Azure Pipelines Agents and Security: Microsoft-Hosted, Self-Hosted, Managed DevOps Pools and Protected Resources
DevOps PART 08

Azure Pipelines Agents and Security: Microsoft-Hosted, Self-Hosted, Managed DevOps Pools and Protected Resources

A Microsoft-hosted agent gives you a fresh machine for every job, but the free tier has a single parallel job and a 60-minute limit; for more you need self-hosted agents or Managed DevOps Pools. We build a one-job container agent for Bookstore and cover the image calendar, job authorization scope, protected resources, restricting variables with settableVariables, and the removal dates of the Node.js runners.

15 Nov 2026 10 min 7
Passwordless Deploys to Azure with Azure Pipelines: Workload Identity Federation, App Service Slots and EF Core Migration Bundles
DevOps PART 07

Passwordless Deploys to Azure with Azure Pipelines: Workload Identity Federation, App Service Slots and EF Core Migration Bundles

With workload identity federation, an Azure service connection works without storing any secret: Azure DevOps issues an OIDC token, and Entra ID matches it to a federated credential and returns an access token. We deploy Bookstore to an App Service staging slot through connections limited to a resource group, run a smoke test and a swap, apply the migration bundle with a connection string from Key Vault, and cover the 2027 retirement of the Azure DevOps issuer.

15 Nov 2026 11 min 8
Environments, Approvals and Checks: Building a Release Process in YAML with Deployment Jobs
DevOps PART 06

Environments, Approvals and Checks: Building a Release Process in YAML with Deployment Jobs

In Azure Pipelines, approvals and checks are defined on resources such as environments, not in the YAML, so whoever edits the pipeline file can't bypass them. We add dev, staging and production stages with deployment jobs to Bookstore, verify the release artifact, and cover the order of checks, going to production only from main with an approval, and the classic release counterparts.

15 Nov 2026 11 min 8
.NET + Angular CI with Azure Pipelines: UseDotNet, NuGet Cache, Test Results, Coverage and Pipeline Artifacts
DevOps PART 04

.NET + Angular CI with Azure Pipelines: UseDotNet, NuGet Cache, Test Results, Coverage and Pipeline Artifacts

.NET and Angular CI in Azure Pipelines is built with Cache@2 keyed on lock files, PublishTestResults@2 for TRX and JUnit, PublishCodeCoverageResults@2 for Cobertura and PublishPipelineArtifact@1 between jobs. We add these to Bookstore's templates and cover DotNetCoreCLI@2 appending --report-trx under Microsoft.Testing.Platform, --locked-mode, and a job that combines the api and web output into one release package.

15 Nov 2026 12 min 7
Azure Pipelines Templates: Building Shared Pipelines with Step, Job, Stage and extends Templates
DevOps PART 03

Azure Pipelines Templates: Building Shared Pipelines with Step, Job, Stage and extends Templates

Azure Pipelines templates let you reuse YAML at step, job, stage and variable level; an extends template centralizes the pipeline's skeleton and becomes binding through a required template check. We move Bookstore's .NET and Angular job templates into a separate pipeline-templates repository pinned to a tag, and build a skeleton that uses each and conditional insertion to block inline scripts and makes an audit job mandatory.

15 Nov 2026 13 min 6
Variables, Parameters and Expressions in Azure Pipelines: ${{ }}, $( ) and $[ ] Explained
DevOps PART 02

Variables, Parameters and Expressions in Azure Pipelines: ${{ }}, $( ) and $[ ] Explained

In Azure Pipelines ${{ }} is evaluated while the file is processed, $( ) right before each task and $[ ] when a job or stage starts; the form you pick decides whether the value exists at that moment. We compute Bookstore's version in one job and pass it on as an output, and cover why secrets don't reach the environment on their own, runtime parameters, variable groups and CI, scheduled and pipeline completion triggers.

15 Nov 2026 13 min 5
What Is Azure DevOps Pipelines? Organization, Project, YAML Pipelines and Your First CI Run
DevOps PART 01

What Is Azure DevOps Pipelines? Organization, Project, YAML Pipelines and Your First CI Run

Azure Pipelines is the Azure DevOps CI/CD service that runs a YAML file in a project on triggers and executes its jobs on agents; the hierarchy is pipeline, stage, job and step. We write a first pipeline that restores, builds and runs Bookstore's SQL Server integration tests, and cover why Azure Repos validates pull requests through branch policies, the GitHub App connection and a GitHub Actions mapping.

15 Nov 2026 14 min 4
Blog Map