【问题标题】:Continuous Integration: Deploy to different Firebase projects from one repository持续集成:从一个存储库部署到不同的 Firebase 项目
【发布时间】:2018-08-07 13:46:48
【问题描述】:

技术栈

  • Bitbucket 管道
  • 码头工人
  • 节点
  • 网页包
  • VueJS 2
  • Firebase

问题

在构建之前,我应该使用上述哪项技术来重新配置 Firebase APIKey?我认为应该在 Webpack 中完成。你能给我举个例子吗?我是 Webpack 菜鸟。

问题

当我使用 Webpack 构建 Vue 项目时,我需要根据触发 Bitbucket Pipelines 的分支更改$FIREBASE_API_KEY 和其他配置选项。如果我在 Bitbucket 上签入对“inflight”的更改,管道应该使用与 firebase 项目“dev”匹配的 $FIREBASE_API_KEY(和其他道具)构建和部署。

// Firebase Config
let config = {
    apiKey: "$FIREBASE_API_KEY",
    authDomain: "my-project.firebaseapp.com",
    databaseURL: "https://my-project.firebaseio.com",
    databasecloudfunctionsUrl: "https://my-project.firebaseio.com",
    projectId: "my-project",
    storageBucket: "my-project.appspot.com",
    messagingSenderId: "xyz123"
}

详情

您在上面看到的配置信息当前位于my-project\src\validation-service.js

看来,我需要在 Webpack 可以操作的单独文件中定义 $FIREBASE_API_KEY(和其他道具)。

Docker 是否可以更新 APIKey 和其他配置以从 Inflight/Master 部署 Dev/Prod?

示例 - 类似技术

【问题讨论】:

  • 我现在使用 Bitbucket 的环境变量 来安全地存储 firebase API 密钥。不知何故,我必须使用 bitbucket-pipelines.yml 和这些环境变量来构建 VueJS 应用程序的开发或生产版本。我想这就是 Webpack 发挥作用的地方......也许吧。
  • 在开始使用 Bitbucket Pipelines 之前,我需要对 Docker 映像进行排序。我目前在 Docker 容器中努力npm run devnpm run build 在容器中效果很好,但我还不明白如何正确分配和转发端口。
  • 我正在使用 Docker 映像,但很难从正在运行的容器中查看 vue 项目。我有这个问题发布:docker/vue/webpack
  • 我可以build and localhost my VueJS/Webpack/Firebase project from a Docker container on my Mac。但是,这对于持续集成管道没有用。相反,我需要 Docker 来设置一个没有代码的 Node/NPM 项目。 Bitbucket Pipelines 将使用这个 Docker 镜像,拉入我的代码,npm run build

标签: node.js firebase webpack vue.js bitbucket-pipelines


【解决方案1】:

回答

Webpack

Webpack 可以为不同的环境配置客户端 API 密钥,例如 Prod 或 Dev。

我使用vue-cli 创建了这个项目并选择了webpack 选项。这会创建文件夹和文件来为多个环境配置持续集成。

在我的具体情况下,我将两个客户端 API 密钥保存在 dev.env.jsprod.env.js 中。这些 .js 文件位于 vue-cli 创建的 config 文件夹中。

我使用This Tutorial 来了解Webpack 如何使用build 文件夹中的文件。对于vue-cli,请关注NODE_ENV'"production"'

更多

此应用程序在部署时需要访问其他 API 密钥。为此,我在 Bitbucket Pipelines 中使用 环境变量。虽然 Bitbucket Pipelines 使用 Docker 镜像来构建和部署,但可以引用来自 Bitbucket 的加密的 environmental variables 的还是 bitbucket-pipelines.yml,即 $PROD_FIREBASE_API_KEY$DEV_FIRBASE_API_KEY

【讨论】:

    猜你喜欢
    • 2020-09-21
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多