【问题标题】:azure build pipeline does not start as triggeredazure 构建管道未按触发方式启动
【发布时间】:2020-07-21 12:21:46
【问题描述】:

Azure git 存储库中有一个构建管道:

variables:
  BuildConfiguration: release
  BuildPlatform: 'any cpu'
trigger:
  branches:
    include:
    - release/*
  paths:
    include:
    - src/*
    - azure-pipelines.yml
    - versionFile

我正在使用push 命令将本地分支推送到远程存储库,如下所示:

git push --set-upstream origin release/0.6.9                                                                                                Total 0 (delta 0), reused 0 (delta 0)                                                                                                                      To https://dev.azure.com/*****/**/_git/**                                                                                                     * [new branch]      release/0.6.9 -> release/0.6.9    

新分支出现在源代码管理中。

新分支更改包含来自src 子文件夹的文件。 问题是构建不会开始。

它应该以documented: 开头:

如果您的管道具有路径过滤器,则仅当新分支对匹配该路径过滤器的文件进行更改时才会触发它。

release/* 过滤器后没有空格,因为我刚刚检查过。

我还可以检查什么?

UPD: 所有路径条件都应该为真吗?

  paths:
    include:
    - src/*
    - azure-pipelines.yml
    - versionFile

只有src/* 文件被新分支改变了,versionFileazure-pipelines.yml 是一样的。

UPD2:

还有一个构建管道来构建文档

git push --set-upstream开始

trigger:
  branches:
    include:
    - release/*
  paths:
    include:
    - doc/*

【问题讨论】:

  • 我在文档中找到了这个注释:Paths in Git are case-sensitive. Be sure to use the same case as the real folders.你能确定大小写是一样的吗?
  • @YanSklyarenko 最奇怪的是git push --set-upstream 没有启动构建管道。但是git commitgit push在现有的release/0.6.9分支上执行时启动管道(仅更新src文件夹,构建管道yml源不受影响,versionFile也没有更改)

标签: azure-devops


【解决方案1】:

在Yaml文件中使用相同的触发器进行测试,可以成功触发构建。

我想分享我的步骤以及此问题的可能原因。

这是我的步骤,你可以参考一下。

回购结构:

Step1:运行 Git 命令将更改推送到新分支。

命令:

git clone "repourlxxx"

git checkout -b release/0.9.7

git add --all

git commit -m "first commit of my code"

git remote add origin xxx

git push --set-upstream origin release/0.9.7

注意:本地修改src文件夹内容时,需要使用git commit命令添加修改,然后推送到新分支。否则,新分支不会有任何变化,因此不会触发构建。

Step2:将创建新分支release/0.9.7并触发管道。

注意:带有触发器的 YAML 文件 (azure-pipelines.yml) 需要包含在新分支中

解决方法:

您可以尝试使用 UI 触发器来覆盖 Yaml 代码中的触发器。

导航到设置-> 触发器-> 选择Override the YAML continuous integration trigger from here 选项。

【讨论】:

  • 我在同一个存储库中有doc 构建管道,它应该被触发。我的意思是,通过相同的推送,会触发一个管道,但不会触发另一个管道。 release/0.6.9历史记录中有src文件夹变化
  • 我今天遇到了类似的问题。请检查更新,您可以尝试使用 UI 页面来设置触发器。你可以检查它是否有效。这可以帮助我们缩小这个问题的范围。
【解决方案2】:

我已禁用现有管道并创建了一个新管道(来自同一个 yml 文件)。

神奇的是它开始像魅力一样工作(我没有使用管道 UI 覆盖触发器)

现有管道无法删除,因为有基于现有管道的版本。

UPD

不,它不会像魅力一样开始发挥作用。只发生过一次。

问题出在path 条件- src/* 它不是递归的,因此只检查 src/ 文件夹中的修改文件,不检查子文件夹。

但是- srcsrc 文件夹下的所有文件都适用,如下所示

  paths:
    include:
    - src 

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多