2015-02-17 22 views
12

Tôi đang cố gắng tìm hiểu cách triển khai Firebase Hosting bằng cách sử dụng CircleCI. Theo tôi biết, không có cách nào để thiết lập triển khai bằng khóa SSH, vì vậy tôi đang cố gắng tìm cách đăng nhập vào Firebase trong quá trình triển khai và đẩy mã. Những gì tôi đã thử cho đến nay là những điều sau đây trong vòng kết nối của tôi.yml:Triển khai vào Firebase Hosting bằng cách sử dụng CircleCI

// circle.yml 
deployment: 
    production: 
    branch: circle-deploy 
    commands: 
     - npm install -g firebase-tools 
     - firebase login | echo -e "${FIREBASE_EMAIL}\n${FIREBASE_PASSWORD}" 
     - firebase deploy 

Tuy nhiên, tôi vẫn gặp lỗi sau và tôi không biết cách khắc phục.

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) 

Trả lời

2

Đây là quy trình chúng tôi theo dõi để triển khai cho CircleCi.

  1. Lưu tên người dùng và mật khẩu của bạn dưới dạng biến môi trường ở cấp dự án trong CircleCi.

  2. Sửa circle.yml bạn

    deployment: 
        production: 
        branch: your_branch 
        commands: 
         - npm install -g firebase-tools 
         - firebase login --email $FIREBASE_USERNAME --password $FIREBASE_PASSWORD 
         - firebase deploy 
    
  3. Push to chi nhánh của bạn

Dường như làm việc tốt.

28

tôi chỉ phải làm điều này và có một cách dễ dàng hơn

  1. Trên máy tính của bạn, bạn có thể nhận mã thông báo truy cập của bạn bằng cách gõ

    firebase login:ci 
    
  2. Save rằng mã thông báo như một biến môi trường trong circleci, $FIREBASE_TOKEN
  3. Để biết bước triển khai của bạn, bạn có thể bỏ qua thông tin đăng nhập:

    deployment: 
        production: 
        branch: master 
        commands: 
         - firebase deploy --token=$FIREBASE_TOKEN --non-interactive 
    
+0

Đã không có ý tưởng ' đăng nhập: ci' là một điều. cảm ơn vì đã chỉ ra điều đó! – drewwyatt

5

Đối với bất kỳ ai khác gặp phải câu hỏi này, đây là các bước tôi phải thực hiện để có được CircleCI (và có lẽ là bất kỳ CI nào khác) đang làm việc với Firebase Hosting.

  1. Tạo một CI mã thông báo: firebase login:ci
  2. Save rằng mã thông báo như một ENV var (FIREBASE_TOKEN)
  3. Sử dụng mã thông báo trong kịch bản triển khai của bạn: firebase deploy --token=$FIREBASE_TOKEN --non-interactive

căn cứ hỏa lực thêm login:ci thời gian gần đây để ngăn chặn người sử dụng mã thông báo triển khai cá nhân cho các dịch vụ CI.

5

Một bổ sung nhỏ cho câu trả lời khác trên ...

Để tránh cài đặt căn cứ hỏa lực công cụ trên toàn cầu trong vòng tròn ci trên mỗi build:

Sửa đổi tập tin package.json bạn để bao gồm căn cứ hỏa lực công cụ như một sự phụ thuộc của dev như vậy:

npm install --save-dev firebase-tools 

Sau đó, trong vòng kết nối của bạn.yml file:

deployment: 
    production: 
    branch: master 
    commands: 
     - ./node_modules/.bin/firebase deploy --token=$FIREBASE_TOKEN --non-interactive 
1

Đây là thiết lập ban đầu của tôi, triển khai chỉ thạc sĩ, bỏ qua kiểm tra

  1. chạy NPM cài đặt -g căn cứ hỏa lực công cụ trên máy tính địa phương của bạn
  2. chạy đăng nhập căn cứ hỏa lực: ci để nhận mã thông báo trên máy địa phương của bạn
  3. chạy init firebase. Điều này sẽ tạo firebase.json chắc chắn rằng nó được cam kết
  4. configure FIREBASE_TOKEN trong Environment Variables trong SETTINGS BUILD của dự án trên circileci

//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 
Các vấn đề liên quan