问题描述
我想从一个项目运行 yaml 管道。我的 yaml 中有一项任务是扫描所有源代码。使用这个 Yaml,我想扫描 master 分支中所有项目和同一组织内所有存储库的所有源代码。
如何获取所有项目的所有 repo 并进行迭代?有人可以帮我吗?
test.yaml
{{1}}
解决方法
如果您希望拉取项目中的每个存储库,您有两个选择之一(见下文)。但是,我建议在 Microsoft 托管的代理上尝试此操作之前要谨慎,默认情况下它们有 60 分钟的超时时间。如果您使用的是自托管代理,则无需担心。我仍然建议将其分解,以避免创建长时间运行的版本,每次运行都会消耗大量磁盘空间。
话虽如此,您有以下选择:
选项 1(不是最好的) 为每个项目手动添加 repository: 依赖项,并为项目中的每个 repo 添加 checkout: 任务。
这是大量手动操作,每次添加报告时都需要维护。
选项 2 您可以编写自定义 PowerShell/bash 脚本,使用 Azure DevOps API 和 git 自动扫描组织内的所有项目和存储库,并将它们拉到机器上。
首先发出获取组织内所有项目的请求:
- https://docs.microsoft.com/en-us/rest/api/azure/devops/core/projects/list?view=azure-devops-rest-6.0
然后,遍历每个项目并获取所有存储库:
最后,遍历每个 repo 并运行 git clone [repository URL] 将其克隆到构建代理上。
注意:您需要确保代理计算机上有大量可用磁盘空间,并在此操作后清理构建空间。