我最近搬到了GitHub上,所以我要做的是在完成推送后将我的react项目托管在firebase中。我将GitHub动作用于此CI / CD流程。这是我现在拥有的main.yml。
name: Build and Deploy
on:
push:
branches:
- master
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Install Dependencies
working-directory: ./my-app
run: npm install
- name: Build
working-directory: ./my-app
run: npm run build
deploy:
name: Deploy
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout Repo
uses: actions/checkout@master
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
with:
args: deploy --only hosting
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
在npm安装和项目构建时,我设法以某种方式设置工作目录。但是在部署过程中,我不断收到此错误,
所以我知道的是,由于工作目录问题而发生此错误。所以我当前的项目结构是这样的。
. (root of my GitHub repository)
└── my-app
├── firebase.json <-- Git Hub action must point to this sub-dir
└── my-app-mobile
├── packages.json
那么我应该如何在Firebase部署过程中做到这一点?如果我对这个问题错了,那是什么问题和答案?看来我不能将working-directory: ./my-app
与uses:
一起使用
答案 0 :(得分:1)
我查看了Firebase CLI的文档,但没有找到通过CLI参数设置firebase.json
路径的任何方法。但是,有一个环境变量存储根目录。不过,它是在predeploy
和postdeploy
钩子的上下文中,所以我不确定CLI是否会尊重它。
$ PROJECT_DIR —包含firebase.json的根目录
https://firebase.google.com/docs/cli#environment_variables
您使用的w9jds/firebase-action
只是CLI的包装。我不确定这是否行得通,但您可以尝试按以下方式设置项目目录。在单独的步骤中设置变量的原因是因为您无法在env
节中求值表达式。有关更多详细信息,请参见this answer。像w9jds/firebase-action
这样的容器操作将有权访问变量,而无需直接通过env
传递变量。
- name: Set project dir environment var
run: echo ::set-env name=PROJECT_DIR::"$GITHUB_WORKSPACE/my-app"
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
with:
args: deploy --only hosting
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
如果这不起作用,另一种方法是派生w9jds/firebase-action
并在此处向entrypoint.sh脚本中添加一个PROJECT_PATH
参数:
https://github.com/w9jds/firebase-action/blob/master/entrypoint.sh
更新:I raised a PR将PROJECT_PATH
参数添加到w9jds/firebase-action
。现在,您可以按以下方式使用操作。
- name: Deploy to Firebase
uses: w9jds/firebase-action@master
with:
args: deploy --only hosting
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_PATH: ./my-app