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

GitHub CI Workflow默认working-directory未生效问题解决

GitHub CI工作流未在指定子目录执行的问题解决

你的问题大概率是YAML缩进层级错误导致defaults配置未生效,而非配置本身的语法错误。以下是具体分析和解决方案:

常见错误原因

GitHub Actions的defaults.run.working-directory必须配置在具体Job的层级下,如果缩进错误把它放在了jobs的直接子项(而非某个Job内部),配置会被忽略。比如错误写法:

jobs:
  # 错误:defaults放在了jobs根层级,未关联到具体job
  defaults:
    run:
      working-directory: ${{ github.workspace }}/cli
  rust-lint-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cargo check

正确配置方式

方式1:Job级默认工作目录(推荐)

将defaults放在目标Job的内部,确保所有run步骤默认使用cli目录:

jobs:
  rust-lint-build:
    runs-on: ubuntu-latest
    # 正确:defaults属于当前job的配置
    defaults:
      run:
        working-directory: ./cli # 等价于${{ github.workspace }}/cli,可简化
    steps:
      - uses: actions/checkout@v4
      - name: Cargo check
        run: cargo check
      - name: Cargo lint
        run: cargo clippy
      - name: Cargo build
        run: cargo build --release

方式2:单步骤指定工作目录

如果不想给整个Job设置默认,也可以在每个需要的run步骤中显式指定:

jobs:
  rust-lint-build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Cargo check
        run: cargo check
        working-directory: ./cli
      - name: Cargo lint
        run: cargo clippy
        working-directory: ./cli

验证配置是否生效

可以在步骤中添加pwd命令,确认当前工作目录是否正确:

steps:
  - uses: actions/checkout@v4
  - name: 查看当前目录
    run: pwd
    working-directory: ./cli

执行后如果输出包含/cli路径,说明目录配置生效,再执行cargo命令就不会找不到Cargo.toml了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:00:06