这是我的 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,字符串路径,布尔isDirectory,Func
2 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) 在 /mnt/vss/_work/1/s/src/Agent.Worker/Build/FileContainerServer.cs 中的 Microsoft.VisualStudio.Services.Agent.Worker.Build.FileContainerServer.UploadAsync(IAsyncCommandContext context, Int32 uploaderId, CancellationToken token) 处: 251号线2 errorRewriter) at Interop.CheckIo(Error error, String path, Boolean isDirectory, Func
我尝试寻找如何授予我的管道权限,我也在使用 Pipeline.workspace 位置来发布我的工件,但我也遇到了同样的错误。 我不知道如何授予我的管道许可。
我对 Azure DevOps 平台还比较陌生。
您的问题是您正在使用
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'