Azure DevOps 代码仓库触发器未被触发

4
我希望在同一个Azure项目中,当另一个仓库提交代码后,能够自动运行一个仓库的流程。
我的管道定义如下:
resources:         
  repositories:
  - repository: SupDevA
    name: Sup.Dev.A
    type: git
    ref: test
    trigger:
      branches:
        include:
        - test
  
steps:
- script: 'echo test'


- template: dummy-template.yml@SupDevA
  parameters:
    text: 'testing if the dummy templates is executed'

Sup.Dev.A是应该在分支test上进行提交时触发我的流水线的存储库名称。但是,当我在分支test上创建提交时,触发器不会触发。

这两个存储库都在同一个项目中。我漏掉了什么吗?此代码基于微软文档https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/multi-repo-checkout?view=azure-devops#triggers

编辑: 已添加了“-template”部分,以便清楚地表明,手动触发时,流水线可以成功执行来自资源存储库的模板。

4个回答

2

由于@walter-qian-msft成功复制了这个问题,必须是与管道位置有关的东西在干扰触发器。

由于他可能在默认分支上测试了这个问题,所以您是否尝试将您的YAML文件合并到master/main分支中?


谢谢!当在“主”分支上具有yaml定义时,它可以工作。问题是为什么会这样?如果在创建流水线时选择了“test”分支并选择该分支上的yaml定义,则只能在主/主要分支上运行。 - StackNet
@StackNet 目前正在处理同样的问题。将管道移动到与 main 不同的分支上,仓库触发器不再起作用。你能解决这个问题吗? - Yacine Lazaar
大家好,你们能解决这个问题吗?我现在也遇到了这个问题。 - carlo
有没有其他分支可以测试这个问题,而不是在主分支上?我花了一整天的时间试图找到解决方案,直到我找到了这个帖子。 - Idris Lokhandwala

1

你的示例在我的端上运行良好。

# Repo: test
# File: azure-pipelines.yml
resources:         
  repositories:
  - repository: SupDevA
    name: Sup.Dev.A
    type: git
    ref: test
    trigger:
      branches:
        include:
        - test

steps:
- script: 'echo test'
- template: dummy-template.yml@SupDevA
  parameters:
    text: 'testing if the dummy templates is executed'

# Repo: Sup.Dev.A
# File: dummy-template.yml
parameters:
- name: text
  default: ''
  type: string

steps:
- script: echo ${{ parameters.text }}

你的yaml文件正确,我建议你删除该仓库并重新创建一个新的。此外,请检查是否覆盖了CI触发器。

enter image description here enter image description here

顺便提一下,您也可以参考此文档

嗨,谢谢! 所以我尝试创建了2个新的仓库/流水线,它们都可以正常工作,因此问题显然出在其中一个原始流水线上。我已经重新创建了这两个流水线,但仍然无法触发。我可以问一下你从哪里找到了你截图中的“触发器”UI吗?因为我只使用yaml流水线,找不到这个仪表板。 - StackNet
@StackNet 我在答案中添加了一张图片,请查看。 - Walter
谢谢,复选框未被选中。仍在尝试中。 - StackNet

0

我认为ref: test可能会让它变得混乱。

我建议尝试移除ref: test,因为触发分支应该可以处理它。如果确实需要它,我会将其更改为ref: 'refs/heads/test'


嗨,谢谢,但是无论是否有引用或删除它,它都不起作用:/我不知道我做错了什么..我甚至在存储库Sup.Dev.A中添加了一个“虚拟”模板,当我手动运行管道时,它成功地执行来自存储库的模板,所以我知道对存储库的引用是正确的。 - StackNet
如果您手动触发构建,它是否有效? - WaitingForGuacamole
如果我触发了管道,它会运行,是的...我将编辑问题,以便可以看到参考工作。 - StackNet
当我针对我的存储库执行与您的示例非常相似的操作时,这似乎可以正常工作。因此,现在唯一突出的是存储库引用本身。行- repository: Sup.Dev.A不应包含句点。Azure DevOps中的Pipeline编辑器页面会标记它。话虽如此,它仍然在我的上面运作,但将其更改为SupDevA可能值得一试(这只是一个处理程序,以便在需要时在后续步骤中使用该存储库)? - WaitingForGuacamole
我确保已经更改了它,使其不包含点号...但仍然没有运气 :/ - StackNet
此时,我可能会尝试移除管道(保留YAML文件),然后基于该YAML文件重新创建。或者创建一个新的管道,并将相同的YAML放入其中。此时,我想验证一下在YAML下方的管道中是否有任何问题。 - WaitingForGuacamole

0

这更像是一条评论而不是答案,如果这不是有帮助的话,我会在之后删除它。 对于我来说,以下方法有效;

trigger: none

resources:
  pipelines:
  - pipeline: 'HmiTpm-Ci'
    source: HmiTpm-Ci
    trigger:
      branches:
      - master
      - features/*
  - pipeline: 'HmiTpm-Release'
    source: HmiTpm-Release
    trigger:
      branches:
      - master
      - features/*
...

如果我看你的脚本,我没有看到source被定义- 你能试着定义一下吗?

在我的情况下,我没有使用模板 - 这可能就是问题所在。


嗨,谢谢。不同之处在于我使用“存储库”资源,而你使用“管道”资源。 https://learn.microsoft.com/zh-cn/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema%2Cparameter-schema#repository-resource - StackNet
啊,是的,你说得对。但你提到了“我想要在同一个Azure项目内的另一个存储库提交后运行一个管道”,这就是如何完成的。这个特定的管道在某个存储库中声明,并且每当对HmiTpm-Ci存储库进行更改时运行。这是你想要的吗?我可能理解有误 - 今天是星期五,我现在不是很敏锐。 - sommmen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接