无法通过推送到YML管道中的另一个存储库触发构建

时间:2019-08-07 22:09:02

标签: azure-devops azure-pipelines azure-pipelines-build-task

我有以下存储库:

  • my-app-repo-包含应用程序的代码
  • pipeline-repo-一系列构建my-app-repo以及其他版本的管道

我正在尝试在pipeline-repo中建立yml管道,该管道将在提交my-app-repo时触发。

根据the official yml documentation,这听起来可能,但我无法使其正常工作。

这是我尝试过的:

pipeline-repo / my-app-repo-build.yml

resources:         
  repositories:
  - repository: target_repo      
    type: git
    name: my-project/my-app_repo
    trigger:
      branches:
        include:
        - master

jobs:
  - job: 
    steps:
      - script: echo "Should be triggered from a push to my-app-repo!"

当我按下my-app-repo时,构建不会触发。它仅针对对 source 存储库(pipeline-repo)的提交而开始,由于包含yml定义,我无法更改。

我想念一些简单的事情吗?

1 个答案:

答案 0 :(得分:0)

编辑:

我看到您已经向您提到的github存储库添加了一个问题。我同意它似乎已损坏。

虽然您不是确切地尝试为管道提供模板功能,但是您可以将其用作解决方法,直到解决您创建的问题为止。

我已经在操场上进行了测试,它似乎可以正常工作。

在应用程序存储库中

resources:
  repositories:
    - repository: templates
      type: git
      name: Pipeline-Templates      

trigger:
  branches:
    include:
      - master

jobs:
- template: azure-pipelines-template.yml@templates

在管道存储库中

jobs:
- job: Get_Last_10_Commits
  pool:
    vmImage: 'vs2017-win2016'
  steps:
  - task: PowerShell@2
    inputs:
      targetType: 'inline'
      script: |
        cd $(Build.SourcesDirectory)
        Write-Host "Show git log (last 10):"
        git log --oneline -10

此变通办法的一个“优点” 是,您不再需要指定要检出的资源库而不是自身< / strong>(您的模板存储库)作为自身存储库是应用程序存储库。

这将允许您通过将其限制在所需的单独存储库中来限制对管道核心的更改,但仍会在app-repo主服务器上触发。

不理想b / c,现在您需要的每个构建都有2个.yml文件,但这基本上就是解决方法的定义:不理想


您的include语法似乎错误。您是否尝试过使用 simple syntax

所有示例(以及我的经验)表明,当触发器具有includeexclude规范时,应使用通配符语法。

resources:         
  repositories:
  - repository: myPHPApp      
    type: GitHub
    connection: myGitHubConnection
    source: ashokirla/phpApp
    trigger:
      branches:
        include:
        - features/*
        exclude:
        - features/experimental/*
      paths:
        exclude:
        - README.md