You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions:使用上下文设置工作目录无法找到文件

GitHub Actions 中 working-directory 用上下文/环境变量失效的解决办法

问题根源

GitHub Actions 的 working-directory 字段默认会把输入的路径拼接到 ${{ github.workspace }} 后面,当成相对路径处理。你调试出来的是完整绝对路径(/home/runner/work/REPO_NAME/REPO_NAME/actors/ACTOR_NAME),直接把这个绝对路径传给 working-directory 的话,最终实际访问的路径会变成 ${github.workspace}/绝对路径,这显然不存在,所以找不到文件。而你硬编码的 actors/ACTOR_NAME 是相对路径,和 workspace 拼接后正好是正确的绝对路径,所以能正常工作。

具体解决方案

1. 给环境变量存相对路径

把环境变量的值改成相对于 workspace 的路径(也就是 actors/ACTOR_NAME),直接在 working-directory 里引用即可:

env:
  ACTOR_DIR: actors/ACTOR_NAME

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        working-directory: ${{ env.ACTOR_DIR }}
        run: ls -la  # 验证文件存在

2. 用 cd 命令替代 working-directory

如果必须保留绝对路径的变量,直接在 run 脚本里切换目录,绕开字段的路径解析逻辑:

env:
  ACTOR_ABS_PATH: /home/runner/work/REPO_NAME/REPO_NAME/actors/ACTOR_NAME

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: |
          cd ${{ env.ACTOR_ABS_PATH }}
          # 执行你的构建命令
          npm install  # 举个例子

3. 确认变量的赋值时机

如果你的变量是动态生成的(比如从步骤输出获取),要确保在引用 working-directory 前变量已经被正确赋值。比如用步骤输出传递:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 动态设置路径
        id: set_path
        run: echo "actor_dir=actors/ACTOR_NAME" >> $GITHUB_OUTPUT
      - name: Build
        working-directory: ${{ steps.set_path.outputs.actor_dir }}
        run: ls -la

快速调试方法

在出问题的步骤前加一个调试步骤,打印实际路径,确认是否符合预期:

- name: 调试路径
  run: |
    echo "Workspace 路径: ${{ github.workspace }}"
    echo "预期工作目录: ${{ env.ACTOR_DIR }}"
    echo "实际拼接路径: ${{ github.workspace }}/${{ env.ACTOR_DIR }}"
    ls -la ${{ github.workspace }}/${{ env.ACTOR_DIR }}

内容的提问来源于stack exchange,提问作者andar1an

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:45:54