Azure Pipeline跨Stage执行文件遇权限拒绝及工件传递问题
问题解决:Azure Pipeline中Pipeline Artifacts权限与工件传递优化
一、解决权限拒绝问题
下载后的可执行文件缺少执行权限,直接在test阶段添加赋权步骤即可:
- 若使用Linux/macOS代理,添加脚本任务执行命令:
chmod +x ./test(路径需与你下载工件的实际路径对应) - 若使用Windows代理,一般不会出现该问题,若遇到可执行PowerShell命令:
icacls .\test /grant Everyone:F
二、仅传递可执行文件的操作方法
要只发布可执行文件而非整个目录,调整PublishPipelineArtifact@1的参数配置即可,有两种方式:
方式1:直接指定可执行文件路径发布
在build阶段的发布任务中,将targetPath设为可执行文件的具体路径:
- task: PublishPipelineArtifact@1 inputs: targetPath: '$(Build.ArtifactStagingDirectory)/test' # 替换为你的可执行文件实际路径 artifact: 'test-executable' publishLocation: 'Container'
方式2:先复制可执行文件到 staging 目录再发布(更规范)
如果编译后的可执行文件不在默认的工件 staging 目录,先通过复制任务将单独的可执行文件移至该目录,再发布:
- task: CopyFiles@2 inputs: SourceFolder: '$(Build.SourcesDirectory)' # 编译生成test文件的目录 Contents: 'test' TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishPipelineArtifact@1 inputs: targetPath: '$(Build.ArtifactStagingDirectory)' artifact: 'test-executable' publishLocation: 'Container'
这样发布的工件中只会包含test可执行文件,test阶段下载后执行赋权命令即可正常运行。
内容的提问来源于stack exchange,提问作者RCB
相关产品推荐
相关产品推荐

