【问题标题】:Github Actions - No Such File or Directory on Any Run StepGithub Actions - 任何运行步骤都没有这样的文件或目录
【发布时间】:2021-01-31 23:02:51
【问题描述】:

我正在尝试为一个小型 Web 项目测试 Github Actions。我在存储库中有两个项目,我想为 Web 客户端创建一个部署脚本。

存储库如下所示:

root
|
|-src
|  |-API
|  |
|  |-WebClient
|
|-docs

我想在 WebClient 目录中运行脚本。当我尝试 cd 进入 ./src/webclient 时,我收到错误 no such file or directory

name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Setup Node.js environment
        uses: actions/setup-node@v2.1.2
        
      - name: Open Web Client Directory
        run: |
          ls -la
          cd ./src/webclient
          ls -la
          
      - name: Run a multi-line script
        run: |
          echo Add other actions to build,
          echo test, and deploy your project.
          ls -la

“打开 Web 客户端目录”步骤的输出:

total 28
drwxr-xr-x 5 runner docker 4096 Oct 17 18:05 .
drwxr-xr-x 3 runner docker 4096 Oct 17 18:05 ..
drwxr-xr-x 8 runner docker 4096 Oct 17 18:05 .git
drwxr-xr-x 3 runner docker 4096 Oct 17 18:05 .github
-rw-r--r-- 1 runner docker 6215 Oct 17 18:05 .gitignore
drwxr-xr-x 4 runner docker 4096 Oct 17 18:05 src
/home/runner/work/_temp/43164e53-98ec-41c2-8773-72e94c3453e5.sh: line 2: cd: ./src/webclient: No such file or directory
Error: Process completed with exit code 1.

看起来可以成功执行ls -la 命令,但是找不到目录./src/webclient。

我有什么明显的遗漏吗?我尝试将命令更改为cd src/webclient,但它也失败了。这适用于两台不同的本地机器,一台 ubuntu 和一台 MacOS。

【问题讨论】:

  • 目录名是WebClient还是webclient?文件系统区分大小写,如果您第一次显示它是WebClient,那么您必须使用cd src/WebClient 而不是cd src/webclient

标签: github continuous-integration github-actions


【解决方案1】:

对于 OP 而言并非如此,但我遇到了一个问题,即无论我如何配置,一个步骤总是以 Error: No such file or directory 失败。

原来,错误是因为我没有在上一步中检查代码。我建议将代码签出作为工作的第一步。

所以一定要确保这样做:

steps:
  - uses: actions/checkout@v2

【讨论】:

  • 救了我的命,兄弟
  • 这件事看起来很明显,应该在文档中更清楚。
  • - uses: actions/checkout@v2 需要访问运行生成的文件:dotnet publish ?
  • 这对我来说绝对是一个面对面的时刻。谢谢。这很明显,哈哈,但不知何故忘了这样做
  • 如果您尝试在子目录上echo,并且您不需要您的代码,也会发生这种情况。您需要在运行中添加mkdir {dir}echo
【解决方案2】:

试试这个:

- name: Open Web Client Directory
  working-directory: src/webclient
  run: |
    ls -la

【讨论】:

    【解决方案3】:

    根据您的日志,这似乎是由于区分大小写:您显示存储库包含src/WebClient(驼峰式!),但随后您尝试使用cd src/webclient(小写)。

    在 macOS 上,这会起作用,因为文件系统默认不区分大小写;不知道为什么它可以在你的 Ubuntu 系统上运行,除非你使用 tab 补全之类的东西,它会为你做外壳。

    要检查子目录中的内容,您可以运行 find src 而不是 ls -la 以查看 src 中的整个目录树。

    【讨论】:

    • 这就是问题所在。我的 WSL 正在为我完成制表符。看起来像 A 级 PEBCAK!
    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 2023-02-11
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多