Публикация артефакта в Azure Devops Pipeline: ошибка получения разрешения на доступ к пути

Это мой сценарий конвейера Yaml

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/DockerImage.tar'
    ArtifactName: 'Docker-Image'
    publishLocation: 'Container'

Это журналы ошибок

Не удалось загрузить «/home/vsts/work/1/a/DockerImage.tar» из-за «Доступ к пути «/home/vsts/work/1/a/DockerImage.tar» запрещен». System.UnauthorizedAccessException: доступ к пути «/home/vsts/work/1/a/DockerImage.tar» запрещен. ---> System.IO.IOException: разрешение отклонено --- Конец внутренней трассировки стека исключений --- в Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func2 errorRewriter) at Interop.CheckIo(Error error, String path, Boolean isDirectory, Func2 errorRewriter) в Microsoft.Win32.SafeHandles.SafeFileHandle.Open (строковый путь, флаги OpenFlags, режим Int32) в Microsoft.Win32.SafeHandles.SafeFileHandle.Open (строка FullPath, режим FileMode, доступ FileAccess, общий ресурс FileShare, параметры FileOptions, Int64 preallocationSize) в System.IO.Strategies.OSFileStreamStrategy..ctor (строковый путь, режим FileMode, доступ FileAccess, общий ресурс FileShare, параметры FileOptions, Int64 preallocationSize) в Microsoft.VisualStudio.Services.Agent.Worker.Build.FileContainerServer.UploadAsync(контекст IAsyncCommandContext, Int32 uploaderId, токен CancellationToken) в /mnt/vss/_work/1/s/src/Agent.Worker/Build/FileContainerServer.cs: строка 251

Я пытался найти, как дать разрешение моему конвейеру, я также использовал Местоположение Pipeline.workspace для публикации моих артефактов, но там я также получил ту же ошибку. Я не уверен, как дать разрешение моему конвейеру.

Я относительно новичок в платформе Azure Devops.

Используете ли вы агенты сборки, размещенные на сервере Microsoft или самостоятельно? Можете ли вы поделиться кодом, который генерирует файл .tar?

Rui Jarimba 02.05.2024 22:10

Я использую агент, размещенный в Microsoft. Код: - script: | sudo docker save $(AccountId).dkr.ecr.${AWS_REGION}.amazonaws.com/dev:build-v‌​1 -o $(Build.ArtifactStagingDirectory)/DockerImage.tar displayName: Docker Save Command

Sanskar Arya 02.05.2024 22:43

Привет @SanskarArya! Есть ли у тебя возможность проверить ответ Руи ниже, чтобы не использовать sudo для запуска docker save? Надеюсь, это поможет решить вашу проблему в этой теме. Спасибо.

Alvin Zhao - MSFT 07.05.2024 10:53

Да, эта проблема решена, на самом деле это была та же проблема, которую Руи объяснил ниже, поскольку я использовал команду sudo, разрешения в файле были только для пользователя root, и, следовательно, конвейер не смог получить права на чтение и запись. Чтобы команда работала. Спасибо

Sanskar Arya 08.05.2024 11:10
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
2
4
147
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

Следующие работы:

trigger: none

pool:
  vmImage: ubuntu-latest

steps:
- script: |
    docker pull busybox
    docker save busybox -o $(Build.ArtifactStagingDirectory)/DockerImage.tar
  displayName: Docker Save Command
  
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/DockerImage.tar'
    ArtifactName: 'Docker-Image'

Спасибо за разъяснения, проблема решена. То же самое вы указали при использовании команды sudo.

Sanskar Arya 08.05.2024 11:11

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

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

Сбой контейнера Grobid при использовании приложений-контейнеров Azure
Функции Azure добавляют пользовательскую переменную среды во время публикации
Добавьте виртуальные приложения и каталоги в мое веб-приложение Azure
Копия ADF активно добавляет дополнительный столбец, если он недоступен в исходном коде
Конвейер Azure DevOps выдает сообщение «##[ошибка]Файлы проекта, соответствующие указанному шаблону, не найдены». при публикации моего приложения?
Azure cli — получение и создание веб-заданий для списка веб-приложений в Azure с помощью Azure CLI
Масштабирование предпочтительного пула узлов в кластере Azure Kubernetes
В токене Entra ID OpenID, который я получаю при регистрации приложения Azure, что такое утверждение «oid» в результирующем токене доступа и откуда оно берется?
Сбой конвейера с ОШИБКОЙ: недостаточно значений для распаковки (ожидалось 2, получено 1) при попытке перенести версию платформы APIM с stv1 на stv2
В функциях Azure на Python. Установка SessionID при публикации сообщения в служебной шине Azure