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

33

我正在运行一个 GitHub Actions 工作流,但出现以下错误。

Translated:

我正在运行一个GitHub Actions工作流,但是遇到了以下错误。

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

我查看了GitHub Actions的工作流语法,但没有找到解决这个问题的任何指示。

我的构建文件看起来像这样:

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

https://github.com/flutter/flutter/issues/34824 - Adiii
@Adiii 我不明白它们之间有什么关系,GitHub 现在允许我在他们自己的卷中创建文件。 - Evandro Pomatti
可能是如何在GitHub Actions CI/CD中构建Flutter的重复问题。 - Nabil Mohammed Nalakath
2个回答

40

终于有时间来看一下,添加sudo解决了问题。

该镜像以用户cirrus运行。还需要提供完整路径:

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

来自 GitHub 文档

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


10

你可以修改容器配置,而不是将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。


3
你能给一个更完整的例子吗?另外,如果你不想指定图片并且希望它使用当前默认的图片呢? - justin.m.chase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接