GitHub Actions 上传的 Artifacts 为啥下载后文件路径变了?
我在 GitHub Actions 里用 actions/upload-artifact@v4 上传了一个 dist 目录,但下载下来发现整个目录结构被展平了,原本的子文件夹都不见了。
我明明是这样写的:
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: my-app
path: dist/
本地 dist 目录里有 dist/assets/xxx.js 这种结构,但下载的 zip 解压后直接变成 assets-xxx.js 这样的文件名,路径全丢了。是我哪里配置错了吗?
你的配置本身没大问题,但默认情况下
upload-artifact会把dist/作为根目录上传,内部结构应该是保留的。如果你看到路径被展平成assets-xxx.js,大概率是你下载方式或者中间某步出了问题。不过为了稳妥,建议改成这样:
用
dist/**通配符,明确告诉它把 dist 下面的所有东西带路径上传。另外检查一下你构建步骤,有没有哪个地方把文件给 flatten 了。有些打包工具或者压缩命令会默认展平路径,我之前就是被一个不起眼的
cp命令坑了半天。还有个情况,如果你是在 Actions 界面直接点下载 zip,GitHub 会把 artifact 打包一层,解压后里面才是你上传的结构,别搞混了。
拿去改改试试,不行再贴完整 workflow 出来看看。