Azure Devops pipelines to trigger on PR complete - azure

What I have to do is, I have 1 branch as below in the azure DevOps respository
dev
Then I create a new branch as dev-C123456, so now I have two branches (dev and dev-C123456)
Then I do some changes to dev-C123456 and I create a Pull Request from dev-C123456 to dev. So once the changes are reviewed, the approver will Approve and Complete the pull request.
Right after he clicks Completes, I want a pipeline to run.
Here's my
And I have a auzre-piplines-on-pr.yml which will trigger the pipeline. For example, in dev branch, I have like this;
pr:
branches:
include:
- dev
...
But it never triggers a pipeline, what should I do?

Right after he clicks Completes, I want a pipeline to run.
So put a trigger for the target branch.
trigger:
branches:
include:
- dev
That will run whenever a commit is made to dev, including when the commit is a PR merge commit.

Related

Deploy Manual only after approval in Gitlab

We have two stages , Build and deploy in our project.
Every time user creates a merge request from Feature branch to Master(PROD) ,it starts the pipeline with the build stage and stops for manual action to deploy.
Approval is only set for merge request and after the pipeline is successful it would merge to master.But the developer/approver can start the manual action to deploy without even merge request approval .
I want the user or approver to click the manual button only after the merge request is approved. Is it possible to control this or can i add a stage in-between only for approval?
deploy prod:
<<: *deploy
stage: deploy prod
environment: PROD
extends: .dockerprod
when: manual

Azure DevOps: Pipeline for all branches but master

I have a website project with two pipelines
1.- PROD pipeline, which is triggered on every master branch push. This builds the site, deploys it and sends an email to the whole company informing about the new version. This works perfectly so far ✅
2.- DEV pipeline: should be triggered on a push to ANY branch that is not master. Builds the site, deploys the site to a DEV stage and sends an email to the author of the commit.
Following the docs, this trigger configuration should trigger the DEV pipeline on all branches but master.
trigger:
branches:
exclude:
- master
include:
- '*'
However, if I then try run the pipeline in any branch that is not master, I get the following error: Encountered error(s): Could not find valid pipeline YAML file for this branch/tag
How can I setup the pipeline, so that it gets triggered by all branches but the master branch?
Thanks in advance for your help!
D
You have to have the YAML file in every branch you want it to trigger for, you cannot just have it in the master branch and expect it to trigger on another branch.

How to trigger azure yml pipeline on tagging master branch only

Regarding azure yml pipeline trigger
How to achieve below requirements
I want to trigger my azure yml pipeline
Should trigger pipeline on master branch if PR is merged to master branch
Should trigger pipeline on master branch if git tag is added on master branch.
Should not trigger pipeline if git tag is added on non-master branches (like develop, features branches)
Should trigger pipeline on non-master branches if PR is merged or commit happens on these branches
How to handle this any idea, I have below trigger set as of now?
trigger:
branches:
include:
- develop
- master
- features/*
paths:
exclude:
- README.md
- azure-pipelines.yml
tags:
include:
- refs/tags/*-RELEASE
In the Azure DevOps Service, the yaml build just trigger current branch, such as the .yml file in the dev branch, and add Push trigger trigger - master, then push code in the master branch, it will not trigger the build.
As a workaround, we need to update the .yml content in the different branch.
For example, If we create YAML build in the master branch, it will create azure-pipelines.yml file in the master branch.
Should trigger pipeline on master branch if PR is merged to master branch
Should trigger pipeline on master branch if git tag is added on master branch.
We can do this by adding the following push triggers
trigger:
batch: true
branches:
include:
- master
tags:
include:
- refs/tags/*-RELEASE
Should not trigger pipeline if git tag is added on non-master branches (like develop, features branches)
Should trigger pipeline on non-master branches if PR is merged or commit happens on these branches
Then create branch develop and features, it also contain the file azure-pipelines.yml, edit the file content.
trigger:
batch: true
branches:
include:
- develop #in the develop enter develop, in the feature branch, we need to update it to feature.
tags:
exclude:
- refs/tags/*-RELEASE
Update1

How to trigger Azure Pipeline on every new push on any branch?

My current implementation of Azure pipelines is to trigger only when a pull request is made to Develop branch. But, I want to run the pipeline on every new push on any branch. How to trigger that?
My current implementation of the Azure YAML file
trigger:
- none
pr:
- branches:
include:
- dev
and below that steps are configured.
You need to specify the trigger something like this. So for example, if there is anything pushed in dev branch a build will get triggered. Ref
trigger:
- dev
or to be more explicit:
trigger:
branches:
include:
- dev
- another-branch
If no triggers are specified it will by default run for all branches. It can be explicitly defined as:
trigger:
branches:
include:
- '*'
In my case, using Azure DevOps, I have this on my .yaml file:
trigger:
- '*'
pool:
vmImage: 'windows-latest'
So, it gets triggered no matter to which branch I'm pushing to.
I hope it might help.
Note: the pool part is not relevant; I just added to give more context.
If you have git and a repo created in your project, you can easily connect git to azure dev ops. So let's say you want to deploy every push you give to the master branch of your repo. You can connect your master branch to the azure DevOps so it deploys it automatically.
This link will provide additional information

how to get target branch from a pull request using azure devops api or other methods?

I'm trying to make a single build pipeline for 3 env (dev, qa, prod) but with ability to choose which one to build from.
The idea is to keep the pipeline on prod branch or another repo, and not having it in every env.
The issue now is that on a PR it will start the pipeline only on master(prod) branch as it shall contain the yml file.
Is there a way to get the PR target branch in order to add additional conditions for PR triggers?
how to get target branch from a pull request using azure devops api or other methods?
Agree with Yan Sklyarenko. Azure devops provides us with some predefined variables, like:
System.PullRequest.IsFork
System.PullRequest.PullRequestId
System.PullRequest.PullRequestNumber
System.PullRequest.SourceBranch
System.PullRequest.SourceRepositoryURI
System.PullRequest.TargetBranch
To get the target branch from a pull request, we could use the predefined variable System.PullRequest.TargetBranch.
So, we could use this predefined variable as condition:
condition: and(succeeded(), eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/master'))
You can still have one build pipeline.
PR triggers are for github/bitbucket repositories. You can create branch policy which triggers your code etc.
The conditions you can have on each step/task:
conditions in Azure DevOps
for example:
- stage: B
condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/master'))
with that condition this stage will run, only when source branch is named "master"

Resources