GitHub Actions Firebase部署失败:Artifact数组返回[]
问题分析与解决方案
核心原因
你遇到的Artifact not found问题,主要是跨工作流访问Artifact的权限不足,以及下载步骤未明确关联原Build工作流的运行实例导致的。workflow_run触发的工作流默认使用的GITHUB_TOKEN权限有限,无法直接读取原工作流上传的Artifact;同时v4版本的download-artifact需要明确指定原工作流的run-id和仓库信息才能正确拉取。
具体修复步骤
1. 为Deploy工作流添加必要权限
在Deploy工作流的jobs字段上方,添加权限配置,确保能读取Actions和Artifacts:
name: Deploy to Firebase Hosting on successful build 'on': workflow_run: workflows: [Firebase Deployment Build] types: - completed permissions: actions: read artifacts: read # 关键权限:允许读取Artifact jobs: deploy: # 后续原有内容保持不变
2. 完善Download Artifact的参数配置
更新Deploy工作流中的下载步骤,明确指定原Build工作流的run-id和当前仓库,确保关联正确:
- name: Download Build Artifact uses: actions/download-artifact@v4 with: name: build path: build run-id: ${{ github.event.workflow_run.id }} # 关联触发当前工作流的Build运行实例 repository: ${{ github.repository }} # 指定Artifact所在的仓库
3. 验证Build工作流的Artifact上传准确性
修改Build工作流中的Verify Build Directory步骤,直接检查build目录的内容,确保构建产物确实生成:
- name: Verify Build Directory run: ls -la build || echo "Build directory not found or empty"
4. 可选:移除Deploy工作流中不必要的Checkout步骤
如果Firebase部署仅依赖构建产物(build目录),不需要仓库源码,可以移除Checkout Repo步骤,减少流程复杂度:
# 移除以下步骤(如果不需要仓库源码) # - name: Checkout Repo # uses: actions/checkout@v4
其他验证建议
- 查看Build工作流的Artifact页面,确认
buildartifact确实存在且内容正确(在GitHub仓库的Actions-> 对应Build运行记录 ->Artifacts栏查看)。 - 在Deploy工作流的调试步骤中,添加打印Artifact关联信息的命令,进一步排查:
- name: Debug Artifact Context run: | echo "Attempting to download artifact from run ID: ${{ github.event.workflow_run.id }}" echo "Target repository: ${{ github.repository }}"
内容的提问来源于stack exchange,提问作者Tabrez Dal
相关产品推荐
相关产品推荐

