gpt4 book ai didi

validation - 跨不同项目构建验证

转载 作者:行者123 更新时间:2023-12-04 08:05:00 25 4
gpt4 key购买 nike

我陷入了以下情况。我们有一个包含不同项目的 Azure DevOps 组织。目标是将所有管道和发布存储在“操作”项目中。

这样做的好处是,让各个团队远离创建管道或处理 secret (.netrc、容器注册表等)

然而,似乎没有办法在项目 A 中触发构建验证拉取请求,从而触发运营项目中的管道。某些分支的构建验证只能触发项目本身内部的管道

简而言之:项目 A 中的 PR 应该触发项目“操作”中的管道

是否有解决此问题的方法,或者是否会在不久的将来实现此功能? This threat看起来很有希望可以实现。但此后一直很安静。

最佳答案

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

我大量使用 YAML 模板来完成此任务。它们是将大部分逻辑排除在源代码存储库之外的关键。但是,您仍然需要在源代码本身中使用非常轻量级的管道。

以下是我建议您设置管道的方式:

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

  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"

  1. 在您的“Operations/Pipelines” 存储库中创建一个模板,其中包含应用部署的所有阶段。这是一个例子:

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 }}

使用此配置,您可以控制您的Operations/Pipelines 存储库中的所有管道,而不是将使用的单个项目。您可以限制对它的访问,因此只有授权的团队成员才能创建/修改管道。

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

Azure DevOps - Require YAML Inheritance

Microsoft 发布了一本关于使用 YAML 模板实现安全性的入门读物,其中将详细说明您也可以使用的其他一些策略:

关于validation - 跨不同项目构建验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66258125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com