【问题标题】:Azure Devops : Multiple Project and Repo checkoutAzure Devops:多项目和回购结帐
【发布时间】:2021-02-26 15:00:15
【问题描述】:

我想从一个项目运行 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)'

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-yaml azure-pipelines-tasks


    【解决方案1】:

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

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

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

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

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

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

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

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

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

    【讨论】:

    • 感谢 Max 的回复。我将使用选项 2。由于我不希望一个管道运行更长的时间,我正在创建一个管道来获取所有 repo 并根据 repo 和项目名称从第一个管道调用第二个管道。但我在这里面临一个问题。我可以从变量中读取存储库详细信息吗?当我尝试下面的代码时,repo 名称不是从变量中获取的。有什么解决办法吗?示例:存储库:- 存储库:$(variable.reponame) 类型:git 名称:(variable.repioname) 端点:myGitServiceConnection
    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2019-08-02
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多