Skip to main content

Azure DevOps–Skip CI build when pushing code

I assume today that almost everyone is using the concept of a  continuous integration(CI) build. This means that every time a new commit pushed to the master branch(or feature branch) on the remote origin the build pipeline is triggered. This allows to validate if the code changes will compile, the tests succeed, etc…

To configure a CI build in Azure DevOps, you only need to specify the applicable branches in your YAML build pipeline:

However there are exceptional cases where you want don’t want that a new build is triggered. In Azure DevOps this can be done by adding any of the following comments in the message or description in any of the commits that are part of a push:

  • [skip ci] or [ci skip]
  • skip-checks: true or skip-checks:true
  • [skip azurepipelines] or [azurepipelines skip]
  • [skip azpipelines] or [azpipelines skip]
  • [skip azp] or [azp skip]
  • ***NO_CI***

This can be useful if you want to reduce the number of consumed build minutes when using the Microsoft-hosted agents on Azure.

Remark: If you have a lot of small commits pushed often, you can also reduce the cost by batching CI runs. This can be done by setting batch to true in your YAML. When a pipeline is running, the system waits until the run is completed, then starts another run with all changes that have not yet been built.

More information: https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-gity

    Popular posts from this blog

    Azure DevOps/ GitHub emoji

    I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.

    .NET 8–Keyed/Named Services

    A feature that a lot of IoC container libraries support but that was missing in the default DI container provided by Microsoft is the support for Keyed or Named Services. This feature allows you to register the same type multiple times using different names, allowing you to resolve a specific instance based on the circumstances. Although there is some controversy if supporting this feature is a good idea or not, it certainly can be handy. To support this feature a new interface IKeyedServiceProvider got introduced in .NET 8 providing 2 new methods on our ServiceProvider instance: object? GetKeyedService(Type serviceType, object? serviceKey); object GetRequiredKeyedService(Type serviceType, object? serviceKey); To use it, we need to register our service using one of the new extension methods: Resolving the service can be done either through the FromKeyedServices attribute: or by injecting the IKeyedServiceProvider interface and calling the GetRequiredKeyedServic...

    Kubernetes–Limit your environmental impact

    Reducing the carbon footprint and CO2 emission of our (cloud) workloads, is a responsibility of all of us. If you are running a Kubernetes cluster, have a look at Kube-Green . kube-green is a simple Kubernetes operator that automatically shuts down (some of) your pods when you don't need them. A single pod produces about 11 Kg CO2eq per year( here the calculation). Reason enough to give it a try! Installing kube-green in your cluster The easiest way to install the operator in your cluster is through kubectl. We first need to install a cert-manager: kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.yaml Remark: Wait a minute before you continue as it can take some time before the cert-manager is up & running inside your cluster. Now we can install the kube-green operator: kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml Now in the namespace where we want t...