SvelteKit SSG站点构建至production分支的GitHub Actions工作流失败
解决GitHub Actions部署SvelteKit到production分支的错误
问题根源
- 分支引用缺失:
actions/checkout@v3默认仅拉取指定的sveltekit分支,本地仓库未同步远程production分支的引用,导致git worktree add无法识别该分支。 - 路径错误:
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
相关产品推荐
相关产品推荐

