Azure DevOps - build pipeline billing extravaganza » 18 December 2023

Azure DevOps has a nice little feature called Azure Pipelines. It’s a great CI/CD tool, especially if you’re already using Azure DevOps for your source control and work item tracking. However, it’s pricing is a little confusing, and it’s easy to end up paying more than you need to.

Azure offers a free-tier of 1 parallel jobs (or 10 for open source projects) with 1800 minutes per month. This might be enough for small projects, but if you have a larger project, you’ll need to pay for more parallel jobs. The pricing is based both on the number of parallel jobs you need, and the number of minutes you need per month.

The pricing is per month, and you pay for the maximum number of parallel jobs you need at any one time. This is calculated daily.

This means that for each and every day, you pay for the maximum number of parallel jobs that were in effect on that day. If you only use pipelines from 9-5, you pay the whole daily fee ($40 / 30 days) of all pipelines.

But if you turn remove all (paid) parallelization for the weekends, for example, you won’t pay for those days at all.

Since this isn’t documented anywhere, I’ve asked Azure support to confirm it:

Our commerce service sends this value to Azure billing once every day. To determine what amount to send, we do the following:

Figure out what the maximum concurrency that has been set by the customer during the day.

It does not matter whether they reset it 0, since we look at the max value.

If on the next day, they set it 2 for a few minutes, then the bill for that day will be 2 x 1.33 = 2.66.

So, you can set it to 0 before non-working day for managing cost since it’s billed daily.*