我需要检索已在 Azure 数据工厂 (ADF) 中发布并与 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 管道。
根据 json 文件屏幕截图,它们实际上是 ADF 管道。在 DevOps git repo 中,它将在 json 文件中具有如下名称:
如果你想从
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..."
}
}
}
可以获取管道名称: