Github 操作 - 在任何 运行 步骤上都没有此类文件或目录

Github Actions - No Such File or Directory on Any Run Step

我正在尝试为一个小型 Web 项目测试 Github 操作。我在存储库中有两个项目,我只想为 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。

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

在 macOS 上,这是可行的,因为文件系统默认不区分大小写;不确定为什么它可以在您的 Ubuntu 系统上工作,除非您使用制表符补全之类的东西,它会为您做外壳。

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

试试这个:

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

无论我如何配置,我都遇到了以下步骤失败的问题:

Error: No such file or directory

原来这是因为我在上一步中没有签出存储库!

我现在总是将结帐作为工作的第一步:

steps:
  - uses: actions/checkout@v2

一个不同的解决方案,但它可能对其他人有帮助。

在我的例子中,我正在读取一个带有 new-lines 的秘密变量,如下所示:

echo ${{ secrets.STORE_FILE_BASE64 }} | base64 --decode > ${{ github.workspace }}/android/key.jks

这引发了“错误:没有这样的文件或目录”。更改为 "${{ secrets.STORE_FILE_BASE64 }}"(注意引号)解决了我的问题!