我有两个Azure Git Repos,两个团队,每个团队只能查看和贡献自己的Repos。
团队1/仓库1
- Entry.yaml
团队2/仓库2
- Extends.yaml
repo 1包含YAML文件和内容
Entry.yaml归Team 2所有,在Repo 1中
resources:
repositories:
- repository: repoSource
type: git
name: Project1/repo2
extends:
template: extends.yaml@repoSource
字符串
repo 2中的extends.yaml也归Team 2所有。
是否有方法可以防止Entry.yaml被Team 1修改,同时仍然对同一存储库上的其他文件进行更改,原因是防止未经授权的脚本运行,因为可能会将extends.yaml中的作业定义替换为Entry.yaml。
我也试图找到方法来无效的CICD工作,当它检测到扩展模板被更改或删除。
1条答案
按热度按时间t1qtbnec1#
你有几个选择(你也可以把它们组合在一起)。
1.使用environment,您可以强制管道仅在它们扩展模板时才运行:定义批准和检查-必需的模板:
通过所需的模板检查,您可以强制管道使用特定的YAML模板。当此检查到位时,如果管道没有从引用的模板扩展,则管道将失败。
x1c 0d1x的数据
1.在Repo 1中,您可以在主分支和版本/* 分支上设置分支策略,并在
Entry.yaml
文件发生更改时要求Team 2审阅更改。请参阅自动包含代码审阅者的
1.然后回到环境,您可以强制管道从特定分支运行。定义审批和检查-分支控制:
使用分支控制检查,您可以确保与管道链接的所有资源都是从允许的分支生成的,并且这些分支已启用保护。这有助于控制发布就绪性和部署质量。如果多个资源与管道链接,则将验证所有资源的来源。如果已链接另一个管道,则验证所部署的特定运行的分支以进行保护。
的
结合这些,你应该能够实现你想要的合作方式。