Validation 跨不同项目构建验证

Validation 跨不同项目构建验证,validation,build,azure-devops,azure-pipelines,project,Validation,Build,Azure Devops,Azure Pipelines,Project,我被困在以下情况中。我们有一个拥有不同项目的Azure DevOps组织。目标是在“操作”项目中存储所有管道和发布 这样做的好处是,避免单个团队处理创建管道或处理机密(.netrc、容器注册表等) 但是,似乎无法在项目a中触发生成验证请求,该请求将触发Operations项目中的管道。某些分支的构建验证只能触发项目本身内部的管道 简言之:项目A中的PR应该触发项目“运营”中的管道 是否有解决方法,或者该功能是否将在不久的将来实现? 看起来很有希望实施。但是从那以后它就安静了。我最初询问您是否使用

我被困在以下情况中。我们有一个拥有不同项目的Azure DevOps组织。目标是在“操作”项目中存储所有管道和发布

这样做的好处是,避免单个团队处理创建管道或处理机密(.netrc、容器注册表等)

但是,似乎无法在项目a中触发生成验证请求,该请求将触发Operations项目中的管道。某些分支的构建验证只能触发项目本身内部的管道

简言之:项目A中的PR应该触发项目“运营”中的管道

是否有解决方法,或者该功能是否将在不久的将来实现?
看起来很有希望实施。但是从那以后它就安静了。

我最初询问您是否使用YAML管道,因为我有一个类似的设置,用于相同的目的,将YAML管道与代码库分开

我大量使用YAML模板来实现这一点。它们是将大部分逻辑排除在源代码repos之外的关键。但是,在源代码本身中仍然需要一个非常轻量级的管道

以下是我建议您如何设置管道:

  • 在您的“运营”项目中创建“管道”回购。使用此回购存储管道的阶段
  • 在包含您将要部署的项目源代码的repo中,创建一个YAML文件,该文件将从您的“操作/管道”repo中的模板扩展。它看起来像这样:


  • 在您的“运营/管道”回购中创建一个模板,该模板包含应用程序部署的所有阶段。下面是一个例子:


  • 通过此配置,您可以控制操作/管道回购中的所有管道,而不是将要使用的单个项目。您可以限制对它的访问,因此只有授权的团队成员才能创建/修改管道

    您可以选择添加环境检查,该检查要求某些环境从模板继承,这将停止已修改为不使用您创建的管道的部署:

    Microsoft发布了一本关于使用YAML模板实现安全性的入门书,详细介绍了您还可以使用的一些其他策略:


    您使用的是YAML管道还是经典管道?我们使用的是YAML管道。感谢您的详细回复。我像你现在说的那样配置了它。它运行得很好。我想你会发现任何工具都有一点折衷之处。很高兴听到它运行良好!是的,总有一个折衷的地方。如果这对你有效,请将其标记为答案:)嗨@Y-Peter,如果答案解决了你的问题,你可以自由地将其作为答案,这样可以帮助其他社区成员解决同样的问题。祝你今天愉快。:)
      name: CI-Example-Root-Pipeline-$(Date:yyyyMMdd-HHmmss)
      resources:
       repositories:
        - repository: Templates
          type: git
          name: Operations/Pipelines
      trigger:
       - master
      extends:
       - template: deploy-web-app-1.yml@Templates
         parameters:
           message: "Hello World"
    
    parameters:
      message: ""
    stages:
       - stage: output_message_stage
         displayName: "Output Message Stage"
         jobs:
            - job: output_message_job
              displayName: "Output Message Job"
              pool:
                vmImage: "ubuntu-latest"
              steps:
               - powershell: Write-Host "${{ parameters.message }}