如何在git.workspace外检出GitHub仓库及解决权限报错问题
检出仓库到非默认工作区/var/lib/builder的操作方法
直接使用官方的actions/checkout动作,通过path参数指定目标检出路径即可,动作会自动创建不存在的目录,示例配置如下:
steps: - name: 检出代码到/var/lib/builder uses: actions/checkout@v4 with: path: /var/lib/builder
如果需要同时检出子模块、完整提交历史等配置,正常添加actions/checkout的其他参数即可,path参数不会影响其他配置生效。
复制文件出现Permission denied的解决方案
该问题的核心原因是:GitHub Actions运行用户默认对$GITHUB_WORKSPACE外的系统目录(如/var下的路径)只有普通读权限,即使用户被配置了管理员权限,默认执行命令时也不会自动提权,需要显式触发权限提升,可通过以下方案解决:
- 方案1:复制命令前添加
sudo显式提权,GitHub托管的runner默认支持运行用户免密执行sudo,示例命令:sudo cp -rf $GITHUB_WORKSPACE/<要复制的内容> /目标路径/ - 方案2:提前修改目标目录的所有者为当前运行用户,后续操作无需重复加sudo,示例命令:
# 先给目标目录赋权 sudo chown -R $USER:$USER /var/lib/builder # 后续复制无需sudo cp -rf $GITHUB_WORKSPACE/* /var/lib/builder/ - 方案3:如果使用自托管runner,确认runner服务的运行用户对目标目录有读写权限,不要使用root账户运行runner服务,提前给对应目录配置对应读写权限即可。
内容的提问来源于stack exchange,提问作者user2542118
相关产品推荐
相关产品推荐

