1
votes

I'm setting up Azure DevOps pipeline for CI for a .NET Core 3.0 mvc project.

I've created a new branch, DEVOPS, that I would like to store the YAML file in. The file includes a trigger for changes to the master branch:

trigger:
- master

pool:
vmImage: 'ubuntu-latest'

# other steps/tasks below...

I deleted all files except .gitignore and azure-pipelines.yml from the DEVOPS branch, committed it, and pushed it to origin (Az DevOps Repo).

I then switched to the master branch, deleted the azure-pipelines.yml file, committed, and pushed.

this did not trigger the pipeline

Then I made a change to one of the views in master, committed, and pushed.

this also did not trigger the pipeline

So, how can I configure Azure DevOps Pipelines to store the azure-pipelines.yml file in a branch other than master, and trigger on changes to master?

1
It seems that you cannot trigger a build against a branch where yml file doesnot exist.Levi Lu-MSFT
Hi, how’s the things going? What about the below explanation and the method? Feel free to leave comment if you still has puzzle or any issue.Merlin Liang - MSFT

1 Answers

0
votes

According to your operation steps and the YAML configuration, the build could not be triggered is reasonable.

Let's focus on the YAML configuration first. In you YAML definition, you set master as trigger branch. This means only changes occurred on master can trigger this build pipeline.

In your first action, you delete some files from DEVOPS branch. Then commit and push it into remotes/Origin. But, as what you defined in pipeline, this action could not trigger this pipeline. This is as expect.

Next, in master branch, you delete the azure-pipelines.yml file, then commit and push it. Note, at this time, the remote master branch has been sync with the local master branch. In one word, after you push to origin, no azure-pipelines.yml file exists in the master branch of Azure Devops.

BUT, whether the build can run depends on whether yml exists or not. Yeah, you have made some changes on master branch. But without yml file, the build could not be ran successfully. That's why you encountered the pipeline did not be triggered.

And, same reason for your next action.


How can I configure Azure DevOps Pipelines to store the azure-pipelines.yml file in a branch other than master, and trigger on changes to master?

Until now, this could not be achieve if what's your build definition type is YAML.

For the pipeline which definition type is YAML, to achieve what you expect, the yml file with the same configuration must also stored in the relevant branches which be defined in the pipeline.

Take the example you described in the question. If you only store the yml file in DEVOPS branch, no matter do any changes on master branch, it will never trigger the build.

To achieve trigger on changes to master, this yml file must also stored in master branch. So, the pre-condition of build pipeline which definition type is YAML can be triggered is, the yml file must also exists in the relevant branches if it is listed in the yml definition. This because, this build type can run based on the yml from source files.