Я хочу заархивировать и опубликовать набор файлов журнала изменений (журналы изменений, которые я добавил к артефактам с помощью PublishPipelineArtifact), сделав их доступными для загрузки всем пользователям непосредственно из канала Azure Artifacts. Пользователи должны иметь возможность скачать загруженный ZIP-файл, просто воспользовавшись опцией прямой загрузки в канале Azure Artifacts, без необходимости использования команд Azure CLI.
Я использовал UniversalPackages@0
task для публикации в формате zip, но для загрузки мне нужно было использовать команды Azure cli. Но мне не удалось загрузить zip-файл напрямую при использовании UniversalPackages@0
.
Короче говоря, я хотел, чтобы после публикации zip-файла в канале Azure Artifact я хотел загрузить его с помощью кнопки прямой загрузки. Таким образом, пользователи могут загрузить его без использования комментариев в командной строке.
Как я могу этого добиться?
Пожалуйста, найдите скриншоты вышеперечисленного:
Я опубликовал журналы изменений артефактов:
Затем заархивируйте и опубликуйте указанный zip-файл в канале артефактов Azure.
Затем я хочу загрузить zip-файл с помощью кнопки загрузки в ленте, но в приведенном выше случае я не вижу кнопку загрузки. Скриншот кнопки загрузки примера.
Я задал вопрос: Как хранить артефакт zip-файла в канале артефактов Azure
Были упомянуты ответы о том, как опубликовать zip-файл с помощью задачи UniversalPackages. Я использовал ту же задачу для публикации zip-файла в канале Azure Artifact, но не увидел кнопку загрузки внутри канала Azure Artifact.
Этот вопрос похож на: Как хранить артефакт zip-файла в канале артефактов Azure. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.
Если вы хотите использовать Azure DevOps CLI для загрузки универсального пакета из канала Azure Artifacts, вы можете вызвать команду «az artifacts universal download
». Более подробную информацию смотрите в моем ответе ниже.
@Rui Упомянутый вопрос не имеет отношения к моему, мне удалось опубликовать zip-файл в артефакте Azure с помощью UniversalPackages@0. После этого я хочу загрузить загруженный zip-файл с помощью кнопки загрузки (вручную) (не используя скрипт).
Вы можете использовать задачу-скрипт (например, 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 и напрямую загружать их с помощью кнопки загрузки.
@ATHULYA, в пользовательском интерфейсе wen нет такой кнопки для загрузки универсальных пакетов. В сообществе разработчиков есть билет на запрос функции, в котором можно запросить ту же функцию. Вы можете подписаться на этот билет и проголосовать за него в сообществе разработчиков. В настоящее время вы можете загрузить универсальные пакеты вручную только с помощью CLI или REST API.
Есть ли какая-либо другая задача, кроме UniversalPackages, для достижения моего требования?
К сожалению, в пользовательский интерфейс не встроена функция загрузки, поскольку она не предназначена для того, чтобы делать то, что вы хотите. 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 — это сотрудничество и устранение разрозненности.
возможно, вы могли бы уточнить, откуда берутся файлы журнала изменений и почему вы хотите использовать для этого Azure Artifacts? Такое ощущение, что вы используете не тот инструмент.