Azure Devops:多项目和回购检出

Azure Devops : Multiple Project and Repo checkout

我想 运行 来自一个项目的 yaml 管道。我的 yaml 中有一项任务是扫描所有源代码。使用此 Yaml,我想扫描同一组织内所有项目和所有存储库的 master 分支中的所有源代码。

如何获取所有项目的所有 repo 并进行迭代?有人可以帮助我吗?

test.yaml

repositories:
  - repository: justAnotherName
    type: github
    name: myGitRepo
    endpoint: myGitServiceConnection   
    trigger:    
      branches:  
        include:  
        - master
 
steps:
- task: CredScan@2
  inputs:
    toolMajorVersion: 'V2'
    outputFormat: 'tsv'
    scanFolder: '$(Build.SourcesDirectory)'

如果您希望提取项目中的每个回购协议,您有两个选项之一(见下文)。但是,我建议在 Microsoft 托管的代理上尝试此操作之前要小心,默认情况下它们有 60 分钟的超时。如果您使用的是自托管代理,则无需担心。我仍然建议将其分解以避免创建一个长 运行ning 版本,每个 运行.

也会消耗大量磁盘 space

话虽这么说,但您有以下选择:

选项 1(不是最好的) 为每个项目手动添加 repository: 依赖项,并为项目中的每个 repo 添加 checkout: 任务。

这需要大量手动操作,每次添加报告时都需要维护。

选项 2 您可以编写自定义 PowerShell/bash 脚本,使用 Azure DevOps API 和 git 自动扫描组织内的所有项目和存储库,并将它们拉到机器上。

首先发出请求以获取组织内的所有项目:

然后,遍历每个项目并获取所有 repos:

最后,遍历每个 repo 并 运行 git clone [repository URL] 将其克隆到构建代理上。

注意:您需要确保代理计算机上有大量空闲磁盘space,并且您要清理构建space在这个操作之后。