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

SvelteKit SSG站点构建至production分支的GitHub Actions工作流失败

解决GitHub Actions部署SvelteKit到production分支的错误

问题根源

  1. 分支引用缺失:actions/checkout@v3 默认仅拉取指定的sveltekit分支,本地仓库未同步远程production分支的引用,导致git worktree add无法识别该分支。
  2. 路径错误:cp命令使用了绝对路径/prod-branch/,但该目录不存在,应使用相对路径。

修复后的完整工作流配置

name: Build and Deploy

on:
  push:
    branches: [ "sveltekit" ]
  workflow_dispatch:
  
permissions:
  contents: write
  
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
        with:
          ref: sveltekit
          # 拉取完整仓库历史与所有分支,确保本地能识别production分支
          fetch-depth: 0

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 18.17.0

      - name: Install Dependencies
        run: npm install

      - name: Build
        run: npm run build

      - name: Deploy to production branch
        run: |
          # 配置Git提交用户信息(Actions环境默认无此配置)
          git config --global user.name "GitHub Actions"
          git config --global user.email "actions@github.com"
          
          # 显式从远程拉取production分支到本地
          git fetch origin production:production
          
          # 创建工作树并关联production分支
          git worktree add prod-branch production
          
          # 复制构建产物到工作树目录(修正路径为相对路径)
          cp -r build/* prod-branch/
          
          cd prod-branch
          # 仅当有文件变化时提交,避免空提交报错
          git diff --quiet || git commit -m "Deploying build artifacts to production"
          git push origin production

关键修改说明

  • fetch-depth: 0:关闭浅克隆,拉取完整仓库数据,确保本地能获取所有远程分支的引用。
  • git fetch origin production:production:强制从远程拉取production分支并在本地创建对应分支,消除分支引用缺失问题。
  • 修正cp路径:将绝对路径改为相对路径prod-branch/,匹配工作流中创建的目录位置。
  • Git用户配置:解决Actions环境中因无提交用户信息导致的提交失败问题。
  • git diff --quiet ||:避免构建产物无变化时触发空提交,防止流程报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:14:58