我正在为.NET Core 3.0 mvc项目的CI设置Azure DevOps管道。
我创建了一个新分支DEVOPS
,我想将YAML文件存储在其中。该文件包括一个master
分支更改的触发器:
触发:
-大师池:
vmImage:'ubuntu-latest'下面还有#个其他步骤/任务...
我从.gitignore
分支中删除了azure-pipelines.yml
和DEVOPS
以外的所有文件,将其提交,然后将其推到原始位置(Az DevOps Repo)。
然后我切换到master
分支,删除azure-pipelines.yml
文件,提交并推送。
这没有触发管道
然后,我对主视图,提交视图和推送视图中的其中一种视图进行了更改。
这也没有触发管道
因此,如何配置Azure DevOps管道以将azure-pipelines.yml
文件存储在master
以外的分支中,并触发对master
的更改?
答案 0 :(得分:0)
根据您的操作步骤和YAML配置,无法触发构建是合理的。
让我们首先关注YAML配置。在您的YAML定义中,您将master
设置为触发器分支。这意味着只有master
上发生的更改才能触发此构建管道。
在第一步中,您从DEVOPS
分支中删除了一些文件。然后提交并将其推送到remotes/Origin
中。但是,正如您在管道中定义的那样,此操作无法触发该管道。符合预期。
接下来,在master
分支中,删除azure-pipelines.yml
文件,然后提交并推送。请注意,此时,远程主分支已与本地主分支同步。一言以蔽之,在您推送到源之后,Azure Devops的master分支中不存在任何azure-pipelines.yml
文件。
但是,是否可以运行该构建取决于yml是否存在。是的,您已经在master分支上进行了一些更改。但是如果没有yml
文件,该构建将无法成功运行。这就是为什么您遇到未触发管道的原因。
同样,您下一步的原因。
如何配置Azure DevOps管道以存储 除master以外的其他分支中的azure-pipelines.yml文件,并在 更改为主人?
到目前为止,如果您的构建定义类型为 YAML ,则无法实现。
对于定义类型为YAML的管道,要达到您的期望,具有相同配置的yml
文件也必须存储在管道中定义的相关分支中。
以您在问题中描述的示例为例。如果仅将yml
文件存储在DEVOPS
分支中,则无论在master
分支上进行任何更改,都将永远不会触发构建。
要在对master进行更改时触发,此yml
文件也必须存储在master分支中。因此,可以触发定义类型为YAML的构建管道的前提是,如果yml定义中列出了yml文件,则它也必须存在于相关分支中。这是因为,此构建类型可以基于源文件中的yml
运行。