2

我正在使用angular-cli項目,並使用Heroku進行CD集成。存儲庫位於Bitbucket上。 現在我要通過Bithubcket管道使用Firebase部署服務,所以我嘗試瞭如下。如何通過Bitbucket流水線部署Firebase?

的package.json

{ 
    "name": "mail-activator", 
    "version": "0.0.0", 
    "license": "MIT", 
    "scripts": { 
    "ng": "ng", 
    "build": "ng build", 
    "test": "ng test", 
    "lint": "ng lint", 
    "e2e": "ng e2e", 
    "postinstall": "ng build --prod", 
    "deploy": "firebase deploy --token $FIREBASE_TOKEN", 
    "start": "node server.js" 
    }, 
    "private": true, 
    "dependencies": { 
    "@angular/animations": "^4.1.3", 
    "@angular/cli": "1.0.3", 
    "@angular/common": "^4.1.3", 
    "@angular/compiler": "^4.1.3", 
    "@angular/compiler-cli": "^4.1.3", 
    "@angular/core": "^4.1.3", 
    "@angular/forms": "^4.1.3", 
    "@angular/http": "^4.1.3", 
    "@angular/material": "^2.0.0-beta.5", 
    "@angular/platform-browser": "^4.1.3", 
    "@angular/platform-browser-dynamic": "^4.1.3", 
    "@angular/router": "^4.1.3", 
    "angular2-prettyjson": "^2.0.5", 
    "angularfire2": "^4.0.0-rc.0", 
    "bootstrap": "^4.0.0-alpha.6", 
    "core-js": "^2.4.1", 
    "express": "^4.15.3", 
    "firebase": "^4.0.0", 
    "firebase-tools": "^3.9.0", 
    "hammerjs": "^2.0.8", 
    "ng2-sweetalert2": "0.0.8", 
    "ngx-validators": "^3.0.0", 
    "promise-polyfill": "^6.0.2", 
    "rxjs": "^5.4.0", 
    "sweetalert2": "^6.6.3", 
    "zone.js": "^0.8.11" 
    }, 
    "devDependencies": { 
    "@angular/cli": "1.0.3", 
    "@angular/compiler-cli": "^4.1.3", 
    "@types/jasmine": "2.5.47", 
    "@types/node": "~7.0.22", 
    "codelyzer": "~3.0.1", 
    "jasmine-core": "~2.6.2", 
    "jasmine-spec-reporter": "~4.1.0", 
    "karma": "~1.7.0", 
    "karma-chrome-launcher": "~2.1.1", 
    "karma-cli": "~1.0.1", 
    "karma-coverage-istanbul-reporter": "^1.2.1", 
    "karma-jasmine": "~1.1.0", 
    "karma-jasmine-html-reporter": "^0.2.2", 
    "protractor": "~5.1.2", 
    "ts-node": "~3.0.4", 
    "tslint": "~5.3.0", 
    "typescript": "~2.3.3" 
    } 
} 

,這是到位桶管線腳本。

image: node:7.6.0 

pipelines: 
    default: 
    - step: 
     script: # Modify the commands below to build your repository. 
      - npm install 
      - npm run postinstall 
      - npm run deploy 

我想這一點,但它說

i functions: preparing functions directory for uploading... 
Error: Error parsing triggers: Cannot find module 'firebase-functions' 
Try running "npm install" in your functions directory before deploying. 

我不知道是否到位桶管線使用泊塢窗或某些容器?在Travis上,我們將firebase-tools安裝爲全球。 npm install -g firebase-tools

但我不確定它會在bitbucket管道上工作。

歡迎任何幫助。

+0

你有'package.json'中列出的firebase函數包嗎?它應該看起來像這樣:https://github.com/firebase/functions-samples/blob/master/quickstarts/uppercase/functions/package.json#L6 – Jeff

回答

6

嘗試使用其他圖像。有一個例子使用both angular cli and firebase tool。所以,你做這樣的事情:

image: gabrielaraujof/angular-cli 

pipelines: 
default: 
    - step: 
    script: # Modify the commands below to build your repository. 
     - npm install 
     - ng build 
     - ng test --watch=false 
     - firebase deploy --token=$FIREBASE_TOKEN --project project-name-firebase --non-interactive 

通過運行獲得「$ FIREBASE_TOKEN」上firebasetool:

firebase login:ci 

保存它有點桶的環境變量(設置>環境變量),然後運行該管道

+0

這是一個完整的例子嗎? – netshark1000

+1

是的。至少這是我幾個月前做的。有什麼問題嗎?如果不奏效,請告訴我,我可以幫忙。 –

+1

一個更新,添加函數在腳本中添加一行:-npm install --prefix函數 –

相關問題