GitHub Actions部署时为什么构建产物没传到服务器?
我用 GitHub Actions 自动部署一个 Vue 项目到自己的 VPS,本地 build 没问题,但 Action 跑完后发现服务器上只有空文件夹。我用的是 scp 把 dist 目录传过去,但好像根本没传成功?
这是我的 workflow 配置:
- name: Deploy to server
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.KEY }}
source: "dist/*"
target: "/var/www/html"
是不是 source 路径写错了?或者 build 步骤根本没生成 dist?但日志里又没报错……
dist/*这个写法上。用 glob pattern 的话,如果目录下没有匹配的文件,scp-action 干脆就不传了,而且不会报错。改成直接写目录名试试:
strip_components: 1会把 dist 这层目录去掉,直接把里面的内容放到目标目录。另外建议在 build 步骤后加个检查,确认 dist 确实生成了:
这样如果 build 没成功或者 dist 是空的,Action 会直接 fail 掉,你能看到问题在哪。
还有个可能的坑:如果你是第一次部署,目标目录
/var/www/html必须先手动创建好,不然 scp 也会出问题。