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函数 –