GitHub 操作工作流错误:权限被拒绝



我正在运行 GitHub 操作工作流,它失败并出现以下错误。

Unhandled exception:
FileSystemException: Cannot create file, path = '/github/home/.flutter' (OS Error: Permission denied, errno = 13)

我在 GitHub 操作的工作流语法中查找,但找不到解决此问题的任何说明。

我的构建文件如下所示:

name: Flutter CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
container:
image:  cirrusci/flutter:v1.7.8-hotfix.4
steps:
- uses: actions/checkout@v1
- name: Install dependencies
run: flutter pub get
working-directory: my_app
- name: Run tests
run: flutter test

终于有时间看了看,添加sudo解决了它。

映像使用用户cirrus运行。还需要提供完整路径:

sudo /home/cirrus/sdks/flutter/bin/flutter pub get

来自 GitHub 文档:

Linux 和 macOS 虚拟机都使用无密码 sudo 运行。 当您需要执行命令或安装需要更多工具时 权限比当前用户,无需使用sudo 提供密码。

除了将所有失败的步骤添加 sudo,您还可以修改容器配置:

container:
image:  cirrusci/flutter:v1.7.8-hotfix.4
options: --user root

解释:导致此问题的原因是 cirrusci/flutter:v1.7.8-hotfix.4 映像上的默认用户无权访问由 github 挂载到此 docker 映像中的某些目录。包括给您带来麻烦的/github目录。向容器配置添加options: --user root可确保默认用户成为 root,这样您就不需要在每个步骤中都执行 sudo。