如何解决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'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。