【问题标题】:How to get all repos in Azure DevOps如何在 Azure DevOps 中获取所有存储库
【发布时间】:2020-09-14 15:40:23
【问题描述】:

我在 Azure DevOps 中有许多项目。我希望能够遍历 Azure DevOps 中的所有 Repos,并获得 Repo 的名称、Repo 的创建者和 Last Updated/commit。

并在有人创建新的 Repo 时收到通知?

【问题讨论】:

    标签: powershell azure-devops azure-devops-rest-api


    【解决方案1】:

    我们可以通过 REST API 列出 repo 信息

    List all repositories 并获取 repo 的名称:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=6.1-preview.1
    

    Get the Creator:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=6.1-preview.1
    

    注意:我们可以通过这个 API 获取分支创建者,我没有找到任何获取 repo 创建者的 API。

    Get latest commit:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits?searchCriteria.$top=1&api-version=6.1-preview.1
    

    当有人创建新的 Repo 时收到通知

    我们无法创建此通知,我们可以在有人更新 repo 代码时收到通知。更多详情请参考此链接:Supported event types

    更新1

    //List project name
    $connectionToken="PAT"
    $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
    $ProjectUrl = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=6.1-preview.1" 
    $Repo = (Invoke-RestMethod -Uri $ProjectUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    $RepoName= $Repo.value.name
    Write-Host  $RepoName
    
    //get latest commit info and branch creator
    $RepoID=$Repo.value.id
    Write-Host  $RepoID
    ForEach ($Id in $RepoID)
    {
    
    //Get latest commit info
    $ProjectUrl = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories/$Id/commits?api-version=6.1-preview.1" 
    $CommitInfo = (Invoke-RestMethod -Uri $ProjectUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    $CommitID = $CommitInfo.value.commitId | Select-Object -first 1
    Write-Host $CommitID
    $CommitUrl = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories/$Id/commits/$($CommitID)?api-version=6.0-preview.1"
    $LatestCommitInfo = (Invoke-RestMethod -Uri $CommitUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    Write-Host "LatestCommitInfo = $($LatestCommitInfo | ConvertTo-Json -Depth 100)"
    
    //Get branch name and creatot
    $BarchCreatorUrl = "https://dev.azure.com/{organization}/{project}/_apis/git/repositories/$Id/refs?api-version=6.1-preview.1"
    $CreateorInfo = (Invoke-RestMethod -Uri $BarchCreatorUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    Write-Host $CreateorInfo.value.name
    Write-Host $CreateorInfo.value.creator.displayName
    }
    

    【讨论】:

    • 是否有任何PowerShell脚本代码可以一次性完成以上所有操作?
    • 嗨@Pradeep,我已经更新了答案,请检查一下。
    • 谢谢@Vito,一旦我测试了上面的脚本,我就会接受你的回答。
    • 嗨@Pradeep,请随时告诉我结果。如果您还有任何问题,我仍然会在这里为您提供帮助。
    • 它按预期工作,但我想获得回购的创建者。我想以表格格式显示输出。
    【解决方案2】:

    另一个选项(使用 Auth 部分更容易)是通过 AZ CLI 使用以下命令检索您的 Azure 存储库:

    1. 登录 Azure

      az login -t $tenant
      
    2. 首先为组织和项目配置默认值,这个 将帮助您不指定 --project--organization 参数 在每个 az devops/repos 命令中:

      az devops configure -d organization=$organizationUrl project=$project
      
    3. 列出您的订阅以及默认项目和组织的存储库

      az repos list --subscription $subscription
      

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2021-01-26
      • 2019-09-17
      • 2019-03-31
      • 1970-01-01
      • 2022-08-19
      相关资源
      最近更新 更多