我正在使用Codeship来部署firebase应用。
为此,我首先需要使用firebase login
命令登录。问题是,我需要在浏览器中登录然后返回命令行并执行部署。
是否有自动方式向Firebase提供凭据?
干杯
答案 0 :(得分:10)
对于旧版本的firebase-tools,已接受的答案是正确的,但是从版本3开始不再使用。获取令牌的新命令是:
firebase login:ci
你应该将它保存在某种环境变量中,理想情况下是FIREBASE_TOKEN。
然后,对于您打算通过ci运行的任何命令(即deploy
),您可以运行:
firebase [command] --token [FIREBASE_TOKEN]
答案 1 :(得分:6)
登录--no - localhost对我有用。然后,您可以将代码粘贴回终端窗口。
答案 2 :(得分:2)
答案:环境变量。
具体来说,使用安装了浏览器和firebase工具的计算机,运行firebase login:ci --no-localhost
并将生成的密钥从firebase CLI工具粘贴到环境变量中,并将其命名为FIREBASE_TOKEN(而不是$ FIREBASE_TOKEN)。
在您的部署中,请说
npm install -g firebase-tools
firebase deploy
完成。如果你关心为什么?请继续阅读。
firebase / firebase-tools repo README表示关于Usage with CI Systems的以下内容。
Firebase CLI需要浏览器才能完成身份验证,但是 与CI和其他无头环境完全兼容。
在具有浏览器的计算机上,安装Firebase CLI。运行
firebase login:ci
登录并打印出新的访问令牌(当前CLI 会话不会受到影响)。
注意:您确实要输入firebase login:ci --no-localhost
在CI中以安全但可访问的方式存储输出令牌 系统。运行Firebase时有两种方法可以使用此令牌 命令:
将令牌存储为环境变量FIREBASE_TOKEN,它会 自动使用。使用
--token <token>
运行所有命令 CI系统中的标志。
BIGGER注意请勿使用$作为环境变量的前缀,否则您将收到以下无意义的错误消息!!!
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
令牌加载的优先顺序为flag,environment 变量,活跃项目。
建议使用环境变量,以便秘密令牌不会存储/显示在日志中。
答案 3 :(得分:1)
请参阅wvm2008's answer了解更新版本
一个选项是mint a token for the build server并通过以下方式将其传递给CLI:
firebase --token <token>
您还可以从交互式登录的系统中获取令牌:
firebase prefs:token
有关更多选项,请参阅this page。