命令行登录Firebase工具

18
我正在使用Codeship来部署一个Firebase应用程序。 为此,我首先需要使用firebase login命令登录。问题是,我需要在浏览器中登录,然后返回到命令行执行部署。 有没有自动提供凭据给Firebase的方法?
谢谢
4个回答

32

firebase login --no-localhost 对我很有用。您需要从浏览器中获取授权码,然后将其粘贴到终端窗口中。


这是正确答案,也是最简单的。 - BuffMcBigHuge

20

接受的答案在旧版本的firebase-tools中是正确的,但自版本3起已被弃用。获取令牌的新命令为:

新版本 firebase-tools 已经更新,使用如下命令获取令牌:

firebase login:ci

最好将这个保存在某种环境变量中,最理想的是FIREBASE_TOKEN。

接下来,对于您打算通过ci运行的任何命令(即deploy),可以运行:

firebase [command] --token [FIREBASE_TOKEN]

1
如果您使用环境变量FIREBASE_TOKEN,那么您只需要使用firebase [command],它会自动使用该变量,除非您指定了--token标志,但这不是首选方法,因为它会在日志中显示密钥(请参阅我的答案)。请不要在环境变量前加上$!!! - Ronnie Royston

6

请参考wvm2008的答案,以获得更加更新的版本

其中一种选择是为构建服务器铸造令牌,并使用以下方式将其传递到CLI中:

firebase --token <token>

您还可以从与您进行交互式登录的系统中获取令牌:

firebase login:ci

更多选项请参见此页面


我错过了那个引用。谢谢! - atardadi
请注意,此答案适用于旧版本的firebase-tools。请参阅下面wvm2008的答案。 - dragly

5
答案:环境变量。
具体来说,使用已安装有浏览器和firebase工具的计算机,运行firebase login:ci --no-localhost命令,并将firebase CLI工具生成的密钥粘贴到一个环境变量中,并将其命名为FIREBASE_TOKEN(而不是$FIREBASE_TOKEN)。
在部署中,使用以下命令:
npm install -g firebase-tools
firebase deploy

已完成。如果您想知道为什么,请继续阅读。

firebase/firebase-tools库的README文件指出了以下有关与CI系统一起使用的信息。

Firebase CLI需要浏览器来完成身份验证,但与CI和其他无头环境完全兼容。

在具有浏览器的计算机上,安装Firebase CLI。运行firebase login:ci以登录并打印新的访问令牌(当前CLI会话不会受到影响)。

注意:实际上您要输入 firebase login:ci --no-localhost

将输出令牌以安全但可访问的方式存储在您的CI系统中。在运行Firebase命令时,有两种使用此令牌的方法:

将令牌存储为环境变量FIREBASE_TOKEN,它将自动被利用。在您的CI系统中使用--token <token>标志运行所有命令。

  • 注意:如果使用--token标志,则必须将令牌放在引号中。
  • 更重要的提示:请勿在环境变量前加$,否则您将收到一个无意义的错误消息!

    Your CLI authentication needs to be updated to take advantage of new features. Please run firebase login --reauth

Error: Command requires authentication, please run firebase login

令牌加载的优先顺序为标志、环境变量、活动项目。

建议使用环境变量,以便密钥令牌不会存储/显示在日志中。


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