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

使用GitHub Actions部署React/TS代码至SiteGround服务器失败求助

React/TypeScript项目GitHub Actions FTP部署失败问题排查与解决

问题现象

使用GitHub Actions部署React/TypeScript项目时,npm安装依赖、构建步骤均正常执行,但进入FTP部署阶段报错,关键错误信息如下:

Wed Feb 14 01:28:55 UTC 2024: fatal: Not a Git project? Exiting...
Error: The process '/usr/bin/git' failed with exit code 8

完整错误日志

/usr/bin/git ftp push --force --auto-init --verbose --syncroot=./ --user=*** --passwd=***  ***
  Wed Feb 14 01:28:55 UTC 2024: git-ftp version 1.6.0 running on Linux 13d0e8be6ce6 6.2.0-1019-azure #19~22.04.1-Ubuntu SMP Wed Jan 10 22:57:03 UTC 2024 x86_64 GNU/Linux
  Wed Feb 14 01:28:55 UTC 2024: Forced mode enabled.
  Wed Feb 14 01:28:55 UTC 2024: Auto init if needed.
  Wed Feb 14 01:28:55 UTC 2024: Using syncroot ./ if exists.
  Wed Feb 14 01:28:55 UTC 2024: Syncroot is './'.
  Wed Feb 14 01:28:55 UTC 2024: fatal: Not a Git project? Exiting...
Error: The process '/usr/bin/git' failed with exit code 8
✅ Deploy Complete

当前GitHub Actions配置片段

# 推送至"test"分支时触发流水线
on:
  push:
    branches:
      - test

jobs:
  build_and_deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 检出代码
        uses: actions/checkout@v2
      
      - name: 配置Node.js环境
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      
      - name: 安装依赖
        run: npm install --force
      
      - name: 构建站点
        run: npm run build --force
        
        env:
          FTP_SERVER: ${{ secrets.FTP_SERVER_FRONT }}
          FTP_USERNAME: ${{ secrets.FTP_USERNAME_FRONT }}
          FTP_PASSWORD: ${{ secrets.FTP_PASSWORD_FRONT }}
      
      - name: 通过FTP部署至SiteGround
        uses: SamKirkland/FTP-Deploy-Action@3.1.1
        with:
          ftp-server: ${{ secrets.FTP_SERVER_FRONT }}
          ftp-username: ${{ secrets.FTP_USERNAME_FRONT }}
          ftp-password: ${{ secrets.FTP_PASSWORD_FRONT }}
          local-dir: ./

原因分析

  1. 工具依赖Git环境:你使用的SamKirkland/FTP-Deploy-Action@3.1.1底层基于git-ftp,该工具要求运行目录必须是Git仓库根目录才能正常工作。
  2. 部署目录配置错误:React项目npm run build的产物默认输出到build目录,而你配置的local-dir: ./指向项目根目录,既不需要部署源码到服务器,也可能因构建过程中的文件变更导致Git仓库上下文异常。

解决方案

1. 修正部署目录为构建产物目录(推荐)

将部署的本地目录改为React构建产物所在的build目录:

- name: 通过FTP部署至SiteGround
  uses: SamKirkland/FTP-Deploy-Action@3.1.1
  with:
    ftp-server: ${{ secrets.FTP_SERVER_FRONT }}
    ftp-username: ${{ secrets.FTP_USERNAME_FRONT }}
    ftp-password: ${{ secrets.FTP_PASSWORD_FRONT }}
    local-dir: ./build/  # 改为构建产物目录

2. 若必须部署根目录,恢复Git仓库上下文(不推荐)

如果确实需要部署项目根目录,需在部署步骤前重新初始化Git仓库:

- name: 重新初始化Git仓库(仅当必须部署根目录时使用)
  run: |
    git init
    git add .
    git commit -m "temp commit for git-ftp"

- name: 通过FTP部署至SiteGround
  uses: SamKirkland/FTP-Deploy-Action@3.1.1
  with:
    ftp-server: ${{ secrets.FTP_SERVER_FRONT }}
    ftp-username: ${{ secrets.FTP_USERNAME_FRONT }}
    ftp-password: ${{ secrets.FTP_PASSWORD_FRONT }}
    local-dir: ./

额外优化建议

  • 升级actions/checkout到v4版本,避免旧版本潜在问题:
- name: 检出代码
  uses: actions/checkout@v4
  • Node.js 14已停止官方维护,建议升级到18.x或20.x版本:
- name: 配置Node.js环境
  uses: actions/setup-node@v4
  with:
    node-version: '20.x'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:20:57