Reputation: 267
I have a Azure DevOps YAML pipeline which always runs if I push a commit to my git main branch. That's Ok so.
But now I want to use git tags and conditons to run specific jobs in this pipeline only if the commit contains a specific tag.
How can I get the git tags to use them in a condition?
Thank you in forward
Best regards Matthias
Upvotes: 1
Views: 8068
Reputation: 13444
What do you mean about "if the commit contains a specific tag
"?
For example, I have the tags like as the format 'release-xxx
'.
To run particular job in the pipeline when a tag is created as the format 'release-xxx
', you can set the YAML pipeline like as below. You can use the variable Build.SourceBranch
to get the branch/tag name which triggered the current pipeline run.
trigger:
branches:
include:
- main
tags:
include:
- 'release-*'
pool:
vmImage: windows-latest
jobs:
- job: A
displayName: 'JobA'
steps:
. . .
# JobB only runs when the pipeline is triggered by the tags like as the format 'release-xxx'.
- job: B
displayName: 'JobB'
condition: contains(variables['Build.SourceBranch'], 'refs/tags/release-')
steps:
. . .
For example, a commit message contains the keyword like as 'release-xxx
'.
To run particular job in the pipeline when a commit message contains the keyword like as 'release-xxx
', you can set the YAML pipeline like as below. You can use the variable Build.SourceVersionMessage
to get the commit message.
trigger:
branches:
include:
- main
pool:
vmImage: windows-latest
jobs:
- job: A
displayName: 'JobA'
steps:
. . .
# JobB only runs when the commit message contains the keyword like as 'release-xxx'.
- job: B
displayName: 'JobB'
condition: contains(variables['Build.SourceVersionMessage'], 'release-')
steps:
. . .
Upvotes: 5
Reputation: 3582
You can check the below pipeline. It is triggered based on tag and also executes a specific task based on the tag.
trigger:
tags:
include:
- release.*
pool:
vmImage: ubuntu-latest
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo Add other tasks to build, test, and deploy your project.
echo See https://aka.ms/yaml
displayName: 'Run a multi-line script'
- script: echo this pipeline was triggered from the first pipeline
displayName: 'Second pipeline'
condition: eq(variables['Build.SourceBranch'], 'refs/tags/release.v5')
When running the pipeline with release.v4 the task second pipeline is skipped.
When running the pipeline with release.v5 the task second pipeline is executed.
Upvotes: 1