Firebase部署可在控制台中工作,但不能在位桶管道中工作

问题描述

我正在尝试通过bitbucket管道将我的Web应用程序部署到Firebase托管中,它没有在管道中正确部署,但是在控制台中却没有问题。这是我在控制台中所做的:

npm run build
firebase login:ci
firebase deploy --project $PROJECT_NAME

在管道中,我正在运行以下YAML脚本:

image: node:10.15.3

pipelines:
  default:
        - step:
            name: Install and Build App
            caches:
              - node
            script:
              - npm install
              - CI=false npm run build
            artifacts:
              - build/
        - step:
            name: Deploy App to Firebase
            deployment: production
            script:
              - pipe: atlassian/firebase-deploy:0.6.0
                variables:
                  KEY_FILE: $KEY_FILE
                  PROJECT_ID: $PROJECT_ID

我认为这可能与.firebaserc有关,但我不确定。这是.firebaserc:

firebase target:apply hosting $PROJECT_ID $DOMAIN

也许有人可以弄清楚为什么它不起作用,我是管道脚本的新手,但我并没有真正看到问题,它可以成功部署到Firebase托管,但实际上并没有任何作用域。

解决方法

当您运行应生成令牌的命令 firebase login:ci 时,您将该令牌添加到 Bitbucket 中的 Repository Settings > Repository Variables。您选择的任何名称都应与您的管道相匹配。在我的示例中,我使用 FIREBASE_TOKEN_CI。当我将更改提交到 bitbucket 时,它会运行管道、构建和部署。

您始终可以在 package.json 中修改脚本,因此在您的 cli 中,您可以像运行 npm run build:prod 等一样运行 npm run start,并在 yml 中使用 build:prod。 这是一个例子:

"scripts": {
    "ng": "ng","start": "ng serve","build:prod": "ng build --prod=true"
    }

下面的代码是我用于 Ionic/Angular 的 pipeline.yml 注意:Artifacts 是您的构建文件在运行构建后生成的文件夹。 Angular 被称为 dist,所以你可以使用 dist/。我的示例使用 www/** ,即 Ionics 构建输出。你的例子中有一些 CI=False ,我没有看到也没有使用它,我的项目构建和部署。我的第二个脚本是针对云函数的

- cd functions
   - npm install
   - cd ..

如果你没有函数,你可以省略那部分。我最近遇到了一个关于 OAuth 的错误,我不得不用 login:ci 生成一个新令牌并替换我的令牌,它再次用于部署。希望这可以帮助任何人。一开始我也遇到了问题,找到了一种可以适应其他框架的工作格式。


image: node:10.15.3

pipelines:
 default:
   - step:
       name: Install,Build
       caches:
         - node
       deployment: test
       script:
         - npm install
         - npm run build:prod
       artifacts: 
         - www/**
   - step:
       name: Deploy to Firebase
       deployment: production
       script:
         - cd functions
         - npm install
         - cd ..
         - pipe: atlassian/firebase-deploy:0.3.4
           variables:
             FIREBASE_TOKEN: '$FIREBASE_TOKEN_CI'