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

Github Action切换目录不生效问题求助

GitHub Action目录切换不生效问题分析与解决

问题现象

在GitHub Action拉取请求工作流中,尝试通过run: cd ${{ github.workspace }}/demo_project切换目录,但后续步骤出现以下异常:

  • mkdir _build创建的文件夹位于${{ github.workspace }}根目录,而非预期的demo_project目录下
  • nuget restore抛出错误:

Input file does not exist: D:\demo_project.csproj.

问题根源

GitHub Action的每个run步骤都是独立的Shell会话,cd命令的作用范围仅局限于当前步骤。执行完cd步骤后,后续步骤会自动回到默认工作目录(即${{ github.workspace }}),因此之前的目录切换无法持久生效。

解决方案

有两种可靠的解决方式:

方式1:使用working-directory参数(推荐)

为每个需要在demo_project目录下执行的步骤添加working-directory参数,直接指定该步骤的工作目录,无需手动切换:

name: Publish demo
on: 
  push:
    branches:    
      - 'develop'
  pull_request:
    branches:    
      - 'develop'
jobs:
  web-deploy:
    name: Deploy
    runs-on: windows-latest
    steps:
    - name: Get latest code
      uses: actions/checkout@v3
      
    - name: Setup MSBuild
      uses: microsoft/setup-msbuild@v1

    - name: Setup NuGet
      uses: NuGet/setup-nuget@v1.1.1
      
    - name: Create Build Directory
      run: mkdir _build
      working-directory: ${{ github.workspace }}/demo_project
      
    - name: Restore Packages
      run: nuget restore demo_project.csproj
      working-directory: ${{ github.workspace }}/demo_project

    - name: Build Solution
      run: |
        msbuild.exe demo_project.csproj /nologo /nr:false /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:DeleteExistingFiles=True /p:platform="Any CPU" /p:configuration="Release" /p:PublishUrl="_build"
      working-directory: ${{ github.workspace }}/demo_project
      
    - name: Sync files
      uses: SamKirkland/FTP-Deploy-Action@4.3.3
      with:
        local-dir: "demo_project/_build"
        server: <server>
        username: <username>
        password: ${{ secrets.password }}

方式2:在同一run块中组合cd与后续命令

如果不想使用working-directory,可以将cd命令和后续需要执行的命令放在同一个run块里,确保在同一个Shell会话中执行:

# 示例:将目录切换、创建文件夹、恢复包的操作合并到一个步骤
- name: Prepare & Restore Packages
  run: |
    cd ${{ github.workspace }}/demo_project
    mkdir _build
    nuget restore demo_project.csproj

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:43:51