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

GitHub Actions执行报错:无法找到指定工作目录

问题排查与解决:GitHub Actions工作目录不存在错误

错误原因分析

报错信息:

An error occurred trying to start process '/usr/bin/bash' with working directory '/home/runner/work/myproject-api/myproject-api/app'. No such file or directory

核心问题是全局默认工作目录设置与实际文件结构不匹配:

  • 你在defaults.run中全局配置了working-directory: app,这会强制所有run步骤切换到app目录执行
  • 但你的仓库根目录大概率不存在app文件夹,或者在执行kubectl get pods这个run步骤时,当前路径下没有app目录
  • 另外,工作流里重复的Checkout步骤完全没必要,只会浪费执行资源

解决方案

方案1:移除全局默认工作目录(推荐)

如果不是所有run步骤都需要在app目录执行,直接删掉全局的defaults.run配置,只在需要的run步骤单独指定工作目录:

修改后的工作流文件:

name: Docker Build and Push to Docker Hub and ghcr.io

on:
  push:
    branches:
      - 'feature/auto-deploy-dev'

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Login to DockerHub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.SECRET }}
          password: ${{ secrets.TOKEN }}

      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: .
          platforms: linux/amd64,linux/arm64
          push: true
          file: Dockerfile
          tags: |
            repo/project:latest

      - name: KubeCtl Command
        uses: tale/kubectl-action@v1
        with:
          base64-kube-config: ${{ secrets.KUBECONFIG }}

      - name: Get pods in namespace
        run: kubectl get pods -n myNamespace

方案2:确认app目录存在并调整配置

如果确实需要全局使用app目录,先确保仓库根目录下存在app文件夹,同时做以下调整:

  • 删除重复的Checkout步骤,一次checkout即可获取完整代码
  • 对于不需要在app目录执行的命令(比如kubectl操作),单独覆盖默认工作目录

修改后的关键部分:

defaults:
  run:
    working-directory: app

jobs:
  docker:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        # 确认仓库根目录下存在app子目录,否则此配置无效

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      
      # ...其他步骤保持不变...

      - name: KubeCtl Command
        uses: tale/kubectl-action@v1
        with:
          base64-kube-config: ${{ secrets.KUBECONFIG }}

      - name: Get pods in namespace
        run: kubectl get pods -n myNamespace
        working-directory: . # 覆盖全局配置,回到仓库根目录执行

额外优化建议

  • 所有步骤添加明确名称,方便后续日志排查问题
  • 避免重复执行Checkout操作,减少不必要的资源消耗
  • 只在真正需要的run步骤指定工作目录,不要全局强制设置

内容的提问来源于stack exchange,提问作者cloudscape-germany

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 18:01:28