GitHub Actions中rsync提示仓库源目录为空但实际有文件的问题
解决GitHub Actions中rsync提示源目录为空的问题
问题场景
我在GitHub Actions中配置了rsync同步仓库文件到远程服务器的工作流,代码如下:
jobs: build: runs-on: ubuntu-latest steps: - name: Deploy with rsync run: rsync -avuz --delete . ${{ secrets.USER }}@${{ secrets.HOST }}:~/App/MainPage/
执行时rsync提示源目录为空,但仓库实际存在文件。修改源目录为../../时能正常传输文件,说明rsync功能本身正常。
原因分析
GitHub Actions的运行环境默认不会自动拉取你的仓库代码,工作流启动后当前工作目录(.)是空的,因此rsync检测不到任何文件,触发空目录提示。之前用../../能成功是因为该路径指向了运行环境的上层临时目录(包含仓库文件),但这种写法依赖环境目录结构,属于不规范的临时解决方案。
解决方案
在Deploy with rsync步骤前添加actions/checkout@v4步骤,拉取仓库代码到运行环境的工作目录:
jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository code uses: actions/checkout@v4 - name: Deploy with rsync run: rsync -avuz --delete . ${{ secrets.USER }}@${{ secrets.HOST }}:~/App/MainPage/
额外注意事项
- 添加checkout步骤后,运行环境的工作目录会完整包含仓库内的所有文件,rsync即可正常读取并同步。
- 确保配置的
USER和HOSTsecrets信息正确,且远程服务器的~/App/MainPage/目录有写入权限。
内容的提问来源于stack exchange,提问作者edis1409
相关产品推荐
相关产品推荐

