azure-devops - 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)'
解决方案
如果您希望提取项目中的每个 repo,您有两个选项之一(见下文)。但是,我建议在 Microsoft 托管的代理上尝试此操作之前要小心,默认情况下它们有 60 分钟的超时。如果您使用的是自托管代理,则无需担心。我仍然建议打破这一点,以避免创建一个长时间运行的版本,每次运行也会消耗大量的磁盘空间。
话虽如此,以下是您的选择:
选项 1(不是最好的) 手动添加一个存储库:每个项目的依赖项和一个结帐:项目中每个存储库的任务。
这需要大量手动操作,每次添加报告时都需要维护。
选项 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
然后,遍历每个项目并获取所有 repos:
最后,遍历每个 repo 并运行git clone [repository URL]将其克隆到构建代理上。
注意:您需要确保代理计算机上有大量可用磁盘空间,并在此操作后清理构建空间。
推荐阅读
- google-apps-script - 如何在带有 Google App Scripts 的 Airtable API 中使用 filterByFormula?
- javascript - Javascript 动态创建的事件处理程序在添加另一个时消失
- html - 使用 css 创建多行水平滚动固定宽度的列网格
- php - 如何从 csv 获取数据并放入变量并仅获取我想要的值
- java - 将 Drawable 路径转换为 URI
- arrays - Swift 4 对象数组包含字符串值
- java - Android - 强制停止/崩溃后从服务启动活动
- python - 迭代期间的运行时错误?
- string - Tableau 10 字符串操作
- python - 为什么 tf.pad 返回形状 [?,?,?]