Git仓库部署到VPS仅生成空目录的问题求助
问题诊断与修复
核心问题:未检出仓库代码
你的Workflow缺少克隆GitHub仓库代码到运行器环境的步骤,导致GitHub Actions工作目录是空的,rsync没有任何文件可同步到VPS,最终只生成空目录。
修复后的Workflow配置
在Deploy to Server步骤前添加actions/checkout步骤,确保代码被拉取到运行器中:
name: Deploy to Production on: push: branches: - master jobs: deploy-to-server: runs-on: ubuntu-latest steps: # 新增:检出仓库代码到运行器工作目录 - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 # 可选:如果需要完整Git历史,保留这行 - name: Deploy to Server uses: easingthemes/ssh-deploy@main env: SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }} REMOTE_HOST: ${{ secrets.REMOTE_HOST }} REMOTE_USER: ${{ secrets.REMOTE_USER }} REMOTE_PORT: ${{ secrets.REMOTE_PORT }} TARGET: ${{ secrets.REMOTE_TARGET }} # 可选:添加需要排除的文件/目录,比如依赖包、Git目录 # EXCLUDE: "/node_modules/, /.git/" - name: Dump GitHub context env: GITHUB_CONTEXT: ${{ toJson(github) }} run: echo "$GITHUB_CONTEXT"
新手调试指南
- 验证代码是否检出:在
Checkout步骤后添加以下步骤,确认工作目录有文件:- name: List workspace files run: ls -la $GITHUB_WORKSPACE - 检查VPS权限:确保
REMOTE_USER对TARGET路径有读写权限,否则rsync无法写入文件。 - 核对SSH密钥:确认
SERVER_SSH_KEY是VPS上对应用户的私钥,且公钥已添加到VPS的~/.ssh/authorized_keys中。
是否需要更换Action?
暂时不需要。easingthemes/ssh-deploy是成熟的部署工具,当前问题完全由缺少代码检出步骤导致。若修复后仍有异常,再考虑更换为appleboy/ssh-action或直接用原生rsync命令手动部署。
内容的提问来源于stack exchange,提问作者JREAM
相关产品推荐
相关产品推荐

