使用 CircleCI 部署到 Firebase 托管
Posted
技术标签:
【中文标题】使用 CircleCI 部署到 Firebase 托管【英文标题】:Deploying to Firebase Hosting using CircleCI 【发布时间】:2015-04-18 15:11:59 【问题描述】:我正在尝试弄清楚如何。据我所知,没有办法使用 SSH 密钥设置部署,所以我试图找到一种在部署期间登录 Firebase 并推送代码的方法。到目前为止,我在 circle.yml 中尝试过的内容如下:
// circle.yml
deployment:
production:
branch: circle-deploy
commands:
- npm install -g firebase-tools
- firebase login | echo -e "$FIREBASE_EMAIL\n$FIREBASE_PASSWORD"
- firebase deploy
但是,我不断收到以下错误,我不知道如何解决它。
stream.js:94
throw er; // Unhandled stream error in pipe.
^
Error: write EPIPE
at errnoException (net.js:904:11)
at Object.afterWrite (net.js:720:19)
【问题讨论】:
【参考方案1】:我只需要这样做,还有一种更简单的方法
在您的机器上,您可以通过键入获取访问令牌
firebase login:ci
将该令牌保存为 circleci 中的环境变量,$FIREBASE_TOKEN
对于您的部署步骤,您可以跳过登录:
deployment:
production:
branch: master
commands:
- firebase deploy --token=$FIREBASE_TOKEN --non-interactive
【讨论】:
不知道login:ci
是一个东西。感谢您指出这一点!【参考方案2】:
对上述其他答案的一个小补充......
为了避免在每次构建时在循环 ci 中全局安装 firebase-tools:
修改您的 package.json 文件以包含 firebase-tools 作为开发依赖项,如下所示:
npm install --save-dev firebase-tools
然后在你的 circle.yml 文件中:
deployment:
production:
branch: master
commands:
- ./node_modules/.bin/firebase deploy --token=$FIREBASE_TOKEN --non-interactive
【讨论】:
【参考方案3】:对于偶然发现这个问题的其他人,这些是我必须采取的步骤才能让 CircleCI(可能还有其他任何 CI)与 Firebase Hosting 一起工作。
-
生成 CI 令牌:
firebase login:ci
将该令牌保存为 ENV var (FIREBASE_TOKEN
)
在部署脚本中使用令牌:firebase deploy --token=$FIREBASE_TOKEN --non-interactive
Firebase 最近添加了login:ci
,以防止人们将个人部署令牌用于 CI 服务。
【讨论】:
【参考方案4】:这是我的初始设置,仅部署 master,跳过测试
-
在本地计算机上运行 npm install -g firebase-tools
运行 firebase login:ci 以在本地计算机上获取令牌
运行 firebase 初始化。这将创建 firebase.json 并确保它已提交
在 circileci 项目的 BUILD SETTINGS 环境变量中配置 FIREBASE_TOKEN
//circle.yml
general:
branches:
only:
- master
test:
override:
- echo "test"
deployment:
production:
branch: master
commands:
- npm install -g firebase-tools
- firebase deploy --token=$FIREBASE_TOKEN --non-interactive
【讨论】:
【参考方案5】:这是我们部署到 CircleCi 所遵循的流程。
将您的用户名和密码作为环境变量存储在 CircleCi 中的项目级别。
编辑你的 circle.yml
deployment:
production:
branch: your_branch
commands:
- npm install -g firebase-tools
- firebase login --email $FIREBASE_USERNAME --password $FIREBASE_PASSWORD
- firebase deploy
推送到你的分支
似乎工作正常。
【讨论】:
以上是关于使用 CircleCI 部署到 Firebase 托管的主要内容,如果未能解决你的问题,请参考以下文章
Circleci:如何根据 git release 进行部署(发布一个标签)