GitHub Actions 中如何让多个 job 共享同一个 artifact?

设计师素伟 阅读 9

我用 GitHub Actions 做 CI/CD,想在 build job 里生成一个 dist 文件夹,然后在 deploy job 里用它。但两个 job 是并行跑的,deploy 找不到 build 产出的文件,咋整?

我试过用 actions/upload-artifact 和 download-artifact,但好像没生效。是不是 job 之间默认不共享文件系统?那正确的做法是啥?

这是我的 workflow 配置片段:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm run build
      - uses: actions/upload-artifact@v4
        with:
          name: dist-files
          path: dist/

  deploy:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - uses: actions/download-artifact@v4
        with:
          name: dist-files
      - run: ls -la

但 deploy 步骤里 ls 看不到 dist 内容,是我漏了什么吗?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
长孙艳艳
你配置本身没问题,就是 download-artifact@v4 默认会下载到一个以 artifact name 命名的子目录里。你 ls 看不到是因为文件在 dist-files/ 目录下,不在当前目录。

直接这样改:

deploy:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/download-artifact@v4
with:
name: dist-files
path: dist
- run: ls -la dist


指定 path: dist 让它下载到你期望的目录就行了。另外说一句,你配置里已经有 needs: build 了,这俩 job 不是并行的,deploy 会等 build 跑完才跑,所以 artifact 肯定存在。
点赞
2026-03-01 19:04