Мне нужно получить список конвейеров в Фабрике данных Azure (ADF), которые связаны с определенной веткой в определенном репозитории в Azure DevOps.
Вот что я пробовал до сих пор:
Azure DevOps REST API: я использовал следующий вызов API в PowerShell для получения сведений из ветки в репозитории, поскольку сведения о конвейере хранятся внутри ADF/pipelines, но это не дает ожидаемого результата:
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, запущенных из определенной ветки.
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>
Однако этот командлет возвращает конвейеры в реальном режиме в среде фабрики данных, а не конвейеры Devops.
ADF/pipelines содержит список конвейеров DevOps,
Yaml конвейера DevOps имеет формат .yaml
или .yml
, для подтверждения покажите содержимое папки screenshot
из ADF/pipelines
. Как опубликовать конвейер DevOps в ADF?
Я добавил картинку в тело. Это файл json, а не yml, как конвейеры DevOps.
Как вы, возможно, уже заметили, файл json в папке ADF/Pipeline НЕ является конвейером DevOps, а является конвейером ADF. В файле Json у него будет «имя» в формате json для отображения имени конвейера. Подробности добавлю ниже, спасибо.
@denim, ответ ниже помог тебе?
Судя по снимку экрана с файлами json, на самом деле это конвейеры ADF. В репозитории DevOps git оно будет иметь имя в файле 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
git checkout Develop # for Develop 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: Develop, PipelineName: $pipelineName" # output branch name and pipeline name.
}
} else {
Write-Output "Path 'ADF/pipeline' not found, skipping..."
}
Он может получить имя конвейера:
my expectation was to retrieve the list of devops pipelines published in adf
, как опубликовать конвейер DevOps в ADF? А что такое содержимое папкиADF/pipelines
? Пожалуйста, уточните немного и покажите, что вы хотите получить.