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

构建文件打包上传至服务器后丢失,请求排查方法

问题排查:GitHub Actions打包上传后服务器找不到文件

构建文件打包并上传至服务器的操作步骤均显示执行完成,但目标服务器上找不到devServer.zip文件,无法确定是打包环节未生成文件还是上传环节未成功发送文件。已确认服务器22端口处于开放状态。

GitHub Actions配置

- name: Generate deployment package
    run: zip -r devServer.zip . -x '*.git*' './src/*' './node_modules/*'

  - name: Deploy build outputs
    uses: appleboy/scp-action@master
    with:
      host: ${{ secrets.REMOTE_IP }}
      username: ${{ secrets.REMOTE_SSH_ID }}
      key: ${{ secrets.REMOTE_SSH_KEY }}
      source: "devServer.zip"
      strip_components: 1
      target: "/home/ubuntu"

部署环节执行日志

tar all files into /tmp/sRWFsGKD.tar.gz
23
remote server os type is unix
24
scp file to server.
25
create folder /home/***
26
untar file sRWFsGKD.tar.gz
27
remove file sRWFsGKD.tar.gz

更换source路径后的错误

tar: empty archive


排查方向与方法

  • 先确认打包环节是否生成有效文件:
    • 在打包步骤后添加验证命令,比如ls -l devServer.zip或du -h devServer.zip,查看文件是否存在、大小是否正常。如果文件大小为0,说明zip命令的排除规则可能有问题,检查路径格式是否匹配当前工作目录的结构。
  • 理解scp-action的工作逻辑:
    • appleboy/scp-action会将指定的source文件打包成tar包上传,在服务器解压后会自动删除tar包,不会保留原始的devServer.zip文件。日志中的untar操作就是这个过程,所以服务器上找不到devServer.zip是正常的,应该查看/home/ubuntu目录下的解压文件。
  • 验证strip_components参数的影响:
    • strip_components: 1会在解压时去掉第一层目录,如果打包时是直接压缩当前目录(.)的内容,这个参数会让文件直接放到/home/ubuntu下;如果zip内包含一层目录,则会移除该目录层。可以临时去掉这个参数测试,或者登录服务器查看解压后的目录结构。
  • 检查服务器实际解压路径:
    • 日志中create folder /home/***的***是隐藏的路径,实际登录服务器查看/home/ubuntu下的文件,或者确认是否有其他目录被创建。
  • 确认source路径的正确性:
    • 出现tar: empty archive说明指定的source文件不存在或为空,在打包步骤后添加pwd和ls命令,确认devServer.zip的生成路径与scp-action执行时的工作目录一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:22:55