Я хочу опубликовать zip-файл, а затем загрузить его непосредственно из канала Azure Artifact. Какая задача мне поможет в этом?

Я хочу заархивировать и опубликовать набор файлов журнала изменений (журналы изменений, которые я добавил к артефактам с помощью PublishPipelineArtifact), сделав их доступными для загрузки всем пользователям непосредственно из канала Azure Artifacts. Пользователи должны иметь возможность скачать загруженный ZIP-файл, просто воспользовавшись опцией прямой загрузки в канале Azure Artifacts, без необходимости использования команд Azure CLI.

Я использовал UniversalPackages@0task для публикации в формате zip, но для загрузки мне нужно было использовать команды Azure cli. Но мне не удалось загрузить zip-файл напрямую при использовании UniversalPackages@0.

Короче говоря, я хотел, чтобы после публикации zip-файла в канале Azure Artifact я хотел загрузить его с помощью кнопки прямой загрузки. Таким образом, пользователи могут загрузить его без использования комментариев в командной строке.

Как я могу этого добиться?

Пожалуйста, найдите скриншоты вышеперечисленного:

Я опубликовал журналы изменений артефактов:

Затем заархивируйте и опубликуйте указанный zip-файл в канале артефактов Azure.

Затем я хочу загрузить zip-файл с помощью кнопки загрузки в ленте, но в приведенном выше случае я не вижу кнопку загрузки. Скриншот кнопки загрузки примера.

Я задал вопрос: Как хранить артефакт zip-файла в канале артефактов Azure

Были упомянуты ответы о том, как опубликовать zip-файл с помощью задачи UniversalPackages. Я использовал ту же задачу для публикации zip-файла в канале Azure Artifact, но не увидел кнопку загрузки внутри канала Azure Artifact.

возможно, вы могли бы уточнить, откуда берутся файлы журнала изменений и почему вы хотите использовать для этого Azure Artifacts? Такое ощущение, что вы используете не тот инструмент.

bryanbcook 04.07.2024 23:17

Этот вопрос похож на: Как хранить артефакт zip-файла в канале артефактов Azure. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.

Rui Jarimba 05.07.2024 00:56

Если вы хотите использовать Azure DevOps CLI для загрузки универсального пакета из канала Azure Artifacts, вы можете вызвать команду «az artifacts universal download». Более подробную информацию смотрите в моем ответе ниже.

Bright Ran-MSFT 05.07.2024 07:38

@Rui Упомянутый вопрос не имеет отношения к моему, мне удалось опубликовать zip-файл в артефакте Azure с помощью UniversalPackages@0. После этого я хочу загрузить загруженный zip-файл с помощью кнопки загрузки (вручную) (не используя скрипт).

Dev0001 05.07.2024 10:51
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
143
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать задачу-скрипт (например, PowerShell, Bash и т. д.) для запуска команды «az универсальная загрузка артефактов».

  • Загрузите универсальный пакет из канала, посвященного проекту.
steps:
- task: Bash@3
  displayName: 'Download Universal Package'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  inputs:
    targetType: inline
    script: |
      az artifacts universal download \
        --project 'projectName' \
        --scope 'project' \
        --feed 'feedName' \
        --name 'packageName' \
        --version 'packageVersion' \
        --path 'path/to/place/the/downloaded/package'
  • Загрузите универсальный пакет из канала на уровне организации.
steps:
- task: Bash@3
  displayName: 'Download Universal Package'
  env:
    AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
  inputs:
    targetType: inline
    script: |
      az artifacts universal download \
        --organization 'organizationName' \
        --scope 'organization' \
        --feed 'feedName' \
        --name 'packageName' \
        --version 'packageVersion' \
        --path 'path/to/place/the/downloaded/package'

Если канал размещен в той же организации, что и конвейер, вы можете установить значение переменной среды AZURE_DEVOPS_EXT_PAT как $(System.AccessToken). В противном случае вам необходимо указать PAT (токен личного доступа) в качестве значения. Вы можете установить PAT в качестве секретной переменной в конвейере и передать секретную переменную в AZURE_DEVOPS_EXT_PAT.

steps:
- task: Bash@3
  displayName: 'Download Universal Package'
  env:
    AZURE_DEVOPS_EXT_PAT: $(my_ado_pat)
  inputs:
    targetType: inline
    script: |
      az artifacts universal download \
        --organization 'organizationName' \
        --scope 'organization' \
        --feed 'feedName' \
        --name 'packageName' \
        --version 'packageVersion' \
        --path 'path/to/place/the/downloaded/package'

Это не ответ на мой вопрос, мне нужна задача, по которой я могу публиковать zip-файлы в канале Azure Artifact и напрямую загружать их с помощью кнопки загрузки.

Dev0001 05.07.2024 11:20

@ATHULYA, в пользовательском интерфейсе wen нет такой кнопки для загрузки универсальных пакетов. В сообществе разработчиков есть билет на запрос функции, в котором можно запросить ту же функцию. Вы можете подписаться на этот билет и проголосовать за него в сообществе разработчиков. В настоящее время вы можете загрузить универсальные пакеты вручную только с помощью CLI или REST API.

Bright Ran-MSFT 05.07.2024 11:29

Есть ли какая-либо другая задача, кроме UniversalPackages, для достижения моего требования?

Dev0001 05.07.2024 11:49
Ответ принят как подходящий

К сожалению, в пользовательский интерфейс не встроена функция загрузки, поскольку она не предназначена для того, чтобы делать то, что вы хотите. Azure Artifacts спроектирован как репозиторий пакетов, который будет использоваться инструментами: npm, maven, nuget, azure-cli. Существует механизм аутентификации, защищающий артефакты, и для доступа к нему требуются инструменты.

Вы также не первый, кто просит об этом. Быстрый поиск в Google показывает множество совпадений, большинство из них — переполнение стека:

Также есть невыполненный запрос добавить функцию кнопки загрузки, датированный 2019 годом. Я рискну сказать, что эта функция вряд ли появится.

Поэтому вместо того, чтобы пытаться заставить инструмент делать то, для чего он не предназначен, я хотел бы вернуться назад и спросить, зачем вам нужно, чтобы журнал развертывания Helm постоянно хранился в артефактах Azure. Имейте в виду, что артефакты конвейера ничего не стоят. Артефакты Azure подлежат оплате.

Есть лучшие альтернативы.

  • Артефакты конвейера: журнал можно загрузить непосредственно из конвейера, который его создал.

    Если вы беспокоитесь, что конвейер и его артефакт будут заархивированы через 30 дней, вы можете программно установить политику хранения в конвейере.

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

  • Публикация в сетевой папке: Задача публикации принимает значение, которое позволит вам публиковать артефакты в сетевой папке, а не в качестве артефакта конвейера. Предполагается, что 1) вы используете агент сборки Windows и 2) ваш агент сборки находится в той же сети, что и сетевая папка.

    - task: PublishPipelineArtifact@1
       inputs:
         targetPath: $(Build.ArtifactStagingDirectory)\logfiles
         publishLocation: filePath
         fileSharePath: \\myserver\folder\path
    
  • Публикация в Azure. Возможно, Azure Artifacts — не лучший механизм хранения для вас. Возможно, вы могли бы отправить файл в контейнер хранилища Azure с помощью задачи AzureFileCopy@4.

    - task: AzureFileCopy@4
      inputs:
        sourcePath: '$(Build.ArtifactStagingDirectory)\file_20240101.zip
        azureSubscription: 'MyAzureServiceConnection'
        destination: 'AzureBlob'
        storage: 'mystorageaccount'
        containername: 'mylogfiles'
    
  • Образование. Если членам вашей команды нужны файлы журналов, но хранящиеся в Azure Artifacts, поскольку они не знают, как получить доступ к файлам журналов из конвейера, эту проблему можно решить, обучая пользователей использованию этого инструмента. DevOps — это сотрудничество и устранение разрозненности.

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

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

Как связать рабочие элементы для сборки конвейера yaml при использовании ветвей выпуска?
Термин «скрипт:» не распознается как имя командлета, функции, файла сценария или исполняемой программы
Ошибка обнаружения текущей ветки: фатальный: ref HEAD не является символической ссылкой в ​​выпуске mvn — Azure Pipeline
Как настроить проверку утверждения конвейера Azure для развертывания в приложениях-функциях Azure?
Ошибка: невозможно зарегистрировать свойство «TestType» как тип значения «System.Guid», поскольку оно уже зарегистрировано как «System.String»
Использование API Azure Devops в Python для получения всех измененных файлов в PR
Измените обработку заданий с FIFO на LIFO
Почему я получаю сообщение об ошибке: Ошибка: шаблон файла шаблона соответствует каталогу, а не файлу: /home/vsts/work/1/s в моем файле конвейера файлов yaml?
Azure DevOps REST API: сопоставить шаги ручного тестового примера с результатами тестового запуска?
Не удалось завершить частичное восстановление нашей базы данных Azure DevOps