如何在Azure数据工厂中检索Azure DevOps中特定分支和存储库的已发布管道列表?

问题描述 投票:0回答:1

我需要检索已在 Azure 数据工厂 (ADF) 中发布并与 Azure DevOps 中特定存储库中的特定分支关联的管道列表。

Azure DevOps 管道

这是我迄今为止尝试过的:

Azure DevOps REST API:我在 powershell 中使用以下 API 调用从存储库中的分支检索详细信息,因为管道详细信息存储在 ADF/管道内,但这并没有给我预期的结果:

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&scopePath={scopePath}&recursionLevel={recursionLevel}&includeContentMetadata={includeContentMetadata}&latestProcessedChange={latestProcessedChange}&download={download}&$format={$format}&versionDescriptor.versionOptions={versionDescriptor.versionOptions}&versionDescriptor.version={versionDescriptor.version}&versionDescriptor.versionType={versionDescriptor.versionType}&includeContent={includeContent}&resolveLfs={resolveLfs}&api-version=5.0

我从上述请求中得到了此响应,但我的期望是检索 adf 中发布的 DevOps 管道列表。

count : 1
value : {@{objectId=xxxxxx; gitObjectType=tree; 
        commitId=xxxxxx; path=/ADF/pipeline; isFolder=True; url=https://xxxx.xxxx.xxx
        /xxxx/xxxxxxxx/_apis/git/repositories/xxxxxx/it
        ems?path=%2FADF%2Fpipeline&versionType=Branch&version=Main&versionOptions=None}}

PowerShell 模块:我使用 Get-AzDataFactoryV2Pipeline 列出数据工厂中的管道:

Get-AzDataFactoryV2Pipeline -ResourceGroupName <ResourceGroupName> -DataFactoryName <DataFactoryName>

但是,此 cmdlet 返回数据工厂环境中实时模式的管道,而不是 DevOps 管道。

azure powershell azure-devops azure-data-factory azure-devops-rest-api
1个回答
0
投票

根据 json 文件屏幕截图,它们实际上是 ADF 管道。在 DevOps git repo 中,它将在 json 文件中具有如下名称:

enter image description here

如果你想从

ADF pipeline name
中获取
DevOps git
,你可以循环每个分支,并从json中获取名称值。

Yaml 示例如下:

pool:
  vmImage: Windows-latest

steps:
- checkout: self
  persistCredentials: true                 # keep credential for git command latter.
  
- powershell: |
    git fetch --all
    $branches = git branch --all | ForEach-Object { $_.Trim() -replace 'remotes/origin/', '' }

    foreach ($branch in $branches) {
      if ($branch -notmatch '\*') {                             # exclude HEAD, loop for real branches.
        git checkout $branch
        # Get all JSON files in the "ADF/pipeline" folder
        if (Test-Path -Path "ADF/pipeline") {
          $jsonFiles = Get-ChildItem -Path "ADF/pipeline" -Filter *.json -Recurse
          foreach ($file in $jsonFiles) {
              $jsonContent = Get-Content -Path "ADF/pipeline/$file" -Raw | ConvertFrom-Json
              $pipelineName = $jsonContent.name
              Write-Output "Branch: $branch, PipelineName: $pipelineName"       # output branch name and pipeline name.
          }
         } else {
            Write-Output "Path 'ADF/pipeline' not found, skipping..."
        }
     }
    }

可以获取管道名称:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.