Доступ к артефактам конвейера Azure DevOps из другой организации

Я использую задачу конвейера Azure DevOps DownloadPipelineArtifact@2https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/download-pipeline-artifact-v2?view=azure-pipelines

Эта задача загрузит артефакты другого конвейера. Существует параметр, позволяющий загружать артефакты из конвейера в другом проекте, но для конвейера в другой организации такого параметра не существует. Есть ли способ загрузить артефакты из конвейера в другой организации, при условии, что мы можем авторизоваться в этой другой организации?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не существует доступной задачи конвейера, которую можно было бы использовать для загрузки артефактов сборки из другой организации Azure DevOps.

В качестве обходного пути вы можете попробовать использовать REST API для загрузки артефактов сборки из другой организации Azure DevOps:

  1. Вызовите API «Артефакты — Получить артефакт», чтобы получить downloadUrl указанного артефакта сборки.

  2. Затем позвоните по номеру downloadUrl, чтобы загрузить артефакт в виде ZIP-файла.

  3. Извлеките ZIP-файл.


Ниже приведены шаги по настройке конвейера для вызова API для загрузки артефакта сборки:

  1. Создайте PAT (токен личного доступа) в организации Azure DevOps, из которой вы хотите скачать артефакт сборки. PAT должен иметь как минимум область действия «Build (Read)».

  2. В конвейер, в который вы хотите загрузить артефакт, добавьте созданный выше PAT в качестве секретной переменной.

  3. В конвейере вы можете использовать задачу PowerShell для вызова REST API для загрузки артефакта сборки.

steps:
. . .

- task: PowerShell@2
  displayName: 'Download Build Artifact'
  env:
    MY_PAT: $(myPAT)
  inputs:
    pwsh: true
    targetType: 'inline'
    script: |
      $organization = "xxx"
      $project = "xxx"
      $buildId = 3642
      $artifactName = "drop"
      $uri = "https://dev.azure.com/${organization}/${project}/_apis/build/builds/${buildId}/artifacts?artifactName=${artifactName}&api-version=7.0"

      $pat = $env:MY_PAT
      $base64Token = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f "", $pat)))
      $headers = @{Authorization = "Basic $base64Token"}

      $downloadUrl = (Invoke-RestMethod -Method GET -Uri $uri -Headers $headers).resource.downloadUrl
      $zipFilePath = "$PWD\drop.zip"
      Invoke-RestMethod -Method GET -Uri $downloadUrl -Headers $headers -ContentType "application/zip" -OutFile $zipFilePath

      [System.IO.Compression.ZipFile]::ExtractToDirectory( $zipFilePath, "$PWD")
      Remove-Item $zipFilePath

Спасибо за ответ, я ценю это.

Athanasius 26.06.2024 16:41

Другой вопрос: откуда вы знаете, что нет задачи конвейера, которая поддерживает загрузку артефактов между организациями для конвейеров? Есть ли какая-то документация, подтверждающая это наверняка? Спасибо

Athanasius 26.06.2024 19:59

@Athanasius, Там перечислены все встроенные задачи Azure Pipelines. Я проверил все возможные задачи загрузки артефактов, ни одна из них не имеет доступа к межорганизационным артефактам. Я также зашел на Marketplace, чтобы попробовать поискать, есть ли какие-либо расширения, которые могут обеспечить задачи конвейера для доступа к артефактам между организациями, но также не нашел никаких доступных расширений.

Bright Ran-MSFT 27.06.2024 08:28

@Афанасий, я проверил ресурс конвейеров и ресурс сборок. Их также нет в наличии.

Bright Ran-MSFT 27.06.2024 08:32

Другие вопросы по теме

Похожие вопросы

Конвейеры ADO YAML | Как получить секретную переменную из группы переменных на основе значения другой переменной
Аутентификация с использованием Azure CLI поддерживается только для пользователя (а не для субъекта-службы)
Почему Azure Pipelines устанавливает неправильную версию .NET SDK (согласно global.json)
Необходимо ли после миграции переходить с размещенного XML на модель процесса наследования?
Как получить доступ к артефакту из расширения Azure?
Azure DevOps — ошибка JFrogNuget — произошла ошибка при выполнении задачи: ошибка: команда не выполнена
Динамическое заполнение DependsOn в задании Yaml Azure DevOps
Ошибка при развертывании приложений в локальном кластере K8 с использованием конвейера Azure Devops CI/CD
Команда Git Fetch не получает последние изменения из репозитория Azure DevOps
Конвейер Azure DevOps yaml: использование выходных переменных в условиях оценивается неправильно