使用 github 操作反应部署到 firebase

React deployment to firebase using github actions

on:
  push:
    branches:
      - master

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Archive Production Artifact
        uses: actions/upload-artifact@master
        with:
          name: build
          path: build
  deploy:
    name: Deploy
    needs: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repo
        uses: actions/checkout@master
      - name: Download Artifact
        uses: actions/download-artifact@master
        with:
          name: build
      - name: Deploy to Firebase
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

现在这是 gtihub 操作工作流程,它正在无误地执行构建作业,但在部署时出现错误 this is the error image 它显示的错误是 Error: Specified public directory 'build' does not exist, can't deploy hosting to site landing-page-design-1 我已经从我复制工作流的地方关注了博客一切都一样,除了我的一些项目细节很明显,请帮我弄清楚为什么会出现这个错误,我该如何解决它

您可能将工件解压缩到根目录而不是 build/。 我猜这篇文章是为 download-artifact@v1 而写的,而您正在使用 download-artifact@v2(因为那是当前 master 点)。讨论了两者之间的区别 here.

我会先验证工件下载后发生了什么

- name:  Display directory structure
  run:   ls -R
  shell: bash

如果文件确实在根目录中,添加 path 应该可以解决这个问题。

- name: Download Artifact
  uses: actions/download-artifact@v2
  with:
   name: build
   path: build

PS:不推荐使用 actions/<name>@master,因为如果相同的操作在不同版本之间表现不同,它总是会导致问题...例如 actions/download-artifact ;)

您也可以尝试使用firebase-publish-react来简化您的工作流程文件

这个特殊的动作插件负责在内部构建应用程序,还可以重用前面步骤中的构建目录。

- name: Deploy to Firebase
  uses: mohammed-atif/firebase-publish-react@v1.0
  with:
    firebase-token: ${{ secrets.FIREBASE_TOKEN }}