首页 > 解决方案 > Azure Devops:多项目和回购结帐

问题描述

我想从一个项目运行 yaml 管道。我的 yaml 中有一个任务是扫描所有源代码。使用这个 Yaml,我想扫描 master 分支中的所有源代码,以获取所有项目和同一 Org 中的所有存储库。

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

测试.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)'

标签: azure-devopsazure-pipelinesazure-pipelines-yamlazure-pipelines-tasks

解决方案


如果您希望提取项目中的每个 repo,您​​有两个选项之一(见下文)。但是,我建议在 Microsoft 托管的代理上尝试此操作之前要小心,默认情况下它们有 60 分钟的超时。如果您使用的是自托管代理,则无需担心。我仍然建议打破这一点,以避免创建一个长时间运行的版本,每次运行也会消耗大量的磁盘空间。

话虽如此,以下是您的选择:

选项 1(不是最好的) 手动添加一个存储库:每个项目的依赖项和一个结帐:项目中每个存储库的任务。

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

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

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

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

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

注意:您需要确保代理计算机上有大量可用磁盘空间,并在此操作后清理构建空间。


推荐阅读