GitHub Actions 上传的 Artifacts 为啥下载后文件路径变了?

冠英 ☘︎ 阅读 12

我在 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 这样的文件名,路径全丢了。是我哪里配置错了吗?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
♫子香
♫子香 Lv1
这问题我刚踩过坑,v4 版本确实有些行为变化。

你的配置本身没大问题,但默认情况下 upload-artifact 会把 dist/ 作为根目录上传,内部结构应该是保留的。如果你看到路径被展平成 assets-xxx.js,大概率是你下载方式或者中间某步出了问题。

不过为了稳妥,建议改成这样:

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: my-app
path: dist/**


dist/** 通配符,明确告诉它把 dist 下面的所有东西带路径上传。

另外检查一下你构建步骤,有没有哪个地方把文件给 flatten 了。有些打包工具或者压缩命令会默认展平路径,我之前就是被一个不起眼的 cp 命令坑了半天。

还有个情况,如果你是在 Actions 界面直接点下载 zip,GitHub 会把 artifact 打包一层,解压后里面才是你上传的结构,别搞混了。

拿去改改试试,不行再贴完整 workflow 出来看看。
点赞 1
2026-03-02 10:40