在GitLab CI上运行Firebase模拟器

6

我试图在GitLab CI管道中测试Firestore的安全规则。我需要运行Firebase仿真器来完成这个任务。

然而,Firebase仿真器基本上是启动一个“虚假后端”。所以,我该如何让它与其他任务并行运行?

例如:

stages:
  - emulator
  - test

emulator:
  - stage: emulator
  script:
    - firebase serve --only firestore

test:
  - stage: test
  script:
    - yarn test

test 阶段永远不会被执行,因为 GitLab 正在运行 emulator 阶段。因此它永远无法完成。

1个回答

7

不应该使用2个阶段。请记住,每个阶段都是一个完全独立的“计算机”,在某个地方启动。因此,一个阶段通常无法与另一个阶段交互。

script部分实际上是一个shell脚本。如果你想测试一下是否一切正常,请创建一个shell脚本并执行它。

这是我所做的。请记住,我没有使用您特定的设置进行测试。

stages:
  - test


test:
  - stage: test
  script:
     - yarn compile
     - yarn firebase setup:emulators:firestore
     - yarn firebase emulators:exec -P dev1 --only firestore "yarn test --exit"


为了在CI系统上使用模拟器进行测试,最好添加一个“start”脚本。在这种情况下,我正在添加测试“yarn test --exit”。

2
[Firebaser here] 这是正确的答案,也正是 emulators:exec 的用途所在。顺便提一下,您不再需要运行 setup:emulators:firestore,因为 Firebase CLI 的最新版本会自动下载缺失的仿真器。 - Sam Stern

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接