【问题标题】:Deploying to Firebase Hosting using CircleCI使用 CircleCI 部署到 Firebase 托管
【发布时间】:2015-04-18 15:11:59
【问题描述】:

我正在尝试弄清楚如何使用 CircleCI 部署到 Firebase 托管。据我所知,没有办法使用 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)

【问题讨论】:

    标签: node.js continuous-integration firebase circleci


    【解决方案1】:

    我只需要这样做,还有一种更简单的方法

    1. 在您的机器上,您可以通过键入获取访问令牌

      firebase login:ci
      
    2. 将该令牌保存为 circleci 中的环境变量,$FIREBASE_TOKEN
    3. 对于您的部署步骤,您可以跳过登录:

      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 一起工作。

      1. 生成 CI 令牌:firebase login:ci
      2. 将该令牌保存为 ENV var (FIREBASE_TOKEN)
      3. 在部署脚本中使用令牌:firebase deploy --token=$FIREBASE_TOKEN --non-interactive

      Firebase 最近添加了login:ci,以防止人们将个人部署令牌用于 CI 服务。

      【讨论】:

        【解决方案4】:

        这是我的初始设置,仅部署 master,跳过测试

        1. 在本地计算机上运行 npm install -g firebase-tools
        2. 运行 firebase login:ci 以在本地计算机上获取令牌
        3. 运行 firebase 初始化。这将创建 firebase.json 并确保它已提交
        4. 在 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 所遵循的流程。

          1. 将您的用户名和密码作为环境变量存储在 CircleCi 中的项目级别。

          2. 编辑你的 circle.yml

            deployment:
              production:
                branch: your_branch
                commands:
                  - npm install -g firebase-tools
                  - firebase login --email $FIREBASE_USERNAME --password $FIREBASE_PASSWORD
                  - firebase deploy
            
          3. 推送到你的分支

          似乎工作正常。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-10-26
            • 2017-08-14
            • 1970-01-01
            • 2018-08-19
            • 2020-01-14
            • 2020-02-27
            • 2019-02-09
            • 2021-05-09
            相关资源
            最近更新 更多