在EC2上运行GitHub Actions的setup-ruby时出现ENOENT:找不到文件或目录,mkdir。

4

背景

我在 GitHub Actions 上设置 CI,它最近连接了 Amazon Linux 2 实例。我怀疑问题与权限有关,当 ruby-setup 尝试在实例上创建新文件夹时,但堆栈跟踪不清楚。这发生在两个需要 ruby 的不同工作中。

堆栈跟踪

Run ruby/setup-ruby@v1
  with:
    ruby-version: default
    bundler: default
    bundler-cache: false
    working-directory: .
    cache-version: 0
  env:
    ImageOS: ubuntu20
    JAVA_HOME_8_x64: /home/ec2-user/actions-runner/_work/_tool/jdk/8.0.292/x64
    JAVA_HOME: /home/ec2-user/actions-runner/_work/_tool/jdk/8.0.292/x64
    JAVA_HOME_8_X64: /home/ec2-user/actions-runner/_work/_tool/jdk/8.0.292/x64
Using ruby-2.3.1 as input from file .ruby-version
Error: ENOENT: no such file or directory, mkdir

and

Run ruby/setup-ruby@v1
  with:
    ruby-version: default
    bundler: default
    bundler-cache: false
    working-directory: .
    cache-version: 0
  env:
    PGHOST: localhost
    PGUSER: postgres
    RAILS_ENV: test
    ImageOS: ubuntu20
Using ruby-2.3.1 as input from file .ruby-version
Error: ENOENT: no such file or directory, mkdir

在运行setup-ruby之前,checkout两个步骤都成功运行。

setup-ruby

https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby

故障排除

我尝试过:

  • 修改用户(ec2-user)的权限
  • 寻找替代操作,不过这似乎是唯一维护的操作

我需要做什么才能完成这些步骤?

1个回答

1

这是一个令人困惑的错误,但其实它的意思是尝试创建目录,但父目录不存在。请确保你有/opt/hostedtoolcache目录,并且其可被runner用户写入。最简单的方法是:

mkdir /opt/hostedtoolcache && chmod -R 777 /opt/hostedtoolcache

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