How to configure some optional steps in Azure Pipelines

Hello ! I’m Xavier Jouvenot and in this small post, we are going to see how to configure some optional steps in Azure Pipelines.

Self promotion: You can find other articles on my website 😉

Problematic

When creating a CI/CD pipeline, you may want to trigger some scripts only if some conditions are met. Indeed, depending on the operating system, or on some inputs, you may want to have a pipeline able to adapt itself and run the right scripts to achieve your processes/tests.

I covered the operating system part of it in another blog post, but we are going to dive a little bit deeper in this article.

Solution

In your Azure Pipeline configuration file, there is a very convenient keyword to do just that : . By using this keyword, we will be able to specify... welll, some conditions, in which the step, or job targeted will be executed.

For example, if we want a script to only be executed if the operating system is a Mac environnement, the step will look like that:

- script: |
echo "Hello World from OSX"
displayName: OSX Job
condition: and(succeededOrFailed(), eq(variables['Agent.OS'], 'Darwin'))

With , we check the current operating system, and with , we make sure that this will run even if a previous dependency has failed, unless the run was canceled.

If you want to trigger a step of you pipeline depending on the parameters of a template, for example, you can do it like that

- script: |
echo "Hello World"
displayName: If parameter is release
condition: eq('${{ parameters.configuration }}', 'Release')

With being one of your parameters. In that case, this job will only be triggered if the parameter is set to the value .

Finally, let see another use case, where you want a job to be executed or not, depending of the final state of another job:

- job: Bar
dependsOn: Foo
condition: failed() // Rest of the pipeline

In this example, the job will only be run if the job ended up with a failure.

These are some example of the use case I commonly encountered, so I hope that it will help you in your own pipelines. I also encourage you to look into the Azure Pipeline documentation, where you will find a more complete description on all the possibilities available to you 😉

Thank you all for reading this article, And until my next article, have a splendid day 🙂

Interesting links

Originally published at http://10xlearner.com on November 23, 2020.