构建 Metabase

本文档将向您展示如何在自己的计算机上构建和运行 Metabase,以便您可以试用或测试开发中的功能。您还可以使用预构建的 Docker 镜像运行 Metabase 的开发分支。

安装先决条件

如果您使用 macOS,您需要首先安装 Xcode Command Line Tools,运行

xcode-select --install

要完成 Metabase 代码的任何构建,您需要安装以下工具。

  1. Clojure (https://clojure.net.cn) - 根据您的操作系统按照指南安装最新版本

  2. Java Development Kit JDK (https://adoptopenjdk.net/releases.html) - 您需要安装 JDK 11(更多 Java 版本信息

  3. Node.js (https://node.org.cn/) - 最新 LTS 版本

  4. Node.js 的 Yarn 包管理器 - 版本 1.x 的最新版本 - 您可以在任何操作系统中通过运行以下命令安装

npm install --global yarn

在最新稳定的 Ubuntu/Debian 上,除了 Clojure 之外的所有上述工具都可以通过使用以下命令安装

sudo apt install openjdk-11-jdk nodejs && sudo npm install --global yarn

如果您的机器上安装了多个 JDK 版本,请务必在构建前使用以下命令切换您的 JDK

sudo update-alternatives --config java

然后从菜单中选择 Java 21。

在 M1 苹果电脑上运行

如果您正在较新的 Apple M1 电脑上开发,请注意当前的 NodeJS LTS 原生支持 arm 架构。但是,在尝试构建前端之前,请确保您已安装 Rosetta 2

/usr/sbin/softwareupdate --install-rosetta (root permission not required)

/usr/sbin/softwareupdate --install-rosetta --agree-to-license (root permission required)

如果您运行的是 Windows,请使用 WSL

如果您正在 Windows 上开发,您应该在适用于 Linux 的 Windows 子系统 (WSL) 上运行 Ubuntu,并遵循 Ubuntu/Linux 的说明。

使用远程容器进行 VS Code 开发

或者,无需明确安装上述依赖项,请遵循有关使用 Visual Studio Code及其远程容器支持的指南。

克隆 Metabase 仓库

安装所有构建工具后,您需要从 GitHub 克隆 Metabase 仓库

  1. 创建一个名为 workspace 的文件夹(您可以将其命名为该名称或任何您喜欢的名称),它将存储 Metabase 代码文件。

  2. 打开您的终端应用程序,并使用以下命令导航到您的工作区文件夹

cd ~/workspace
  1. 运行以下命令将 Metabase “克隆”到此文件夹中,使用 GitHub 上 Metabase 仓库的 URL
git clone https://github.com/metabase/metabase

选择您要运行的分支,然后运行它

这是您将反复使用的部分。

Metabase 的“官方”分支名为 master,其他功能开发分支在批准后会合并到其中。因此,如果您想在此之前试用某个功能,您需要知道该分支的名称才能切换到它。操作方法如下:

  1. 打开您的终端应用程序

  2. 导航到您存储 Metabase 代码的位置。如果您严格遵循本指南,您将通过输入以下命令到达那里

    cd ~/workspace/metabase
    
  3. 通过运行以下命令“拉取”最新代码

    git pull
    

    您应该每次都这样做,以确保您的计算机上拥有所有最新的 Metabase 分支和代码。这也是当有人更改功能分支时您获取更新的方式。

  4. 通过转到 GitHub 上该功能的“拉取请求”页面并从那里复制分支名称来查找您要运行的分支名称。这是一个示例 PR 页面,分支名称为 fix-native-dataset-drill-popover

  5. 通过运行以下命令切换到或“签出”该分支

    git checkout <branch-name>
    

    如果我们要切换到上一步中的分支,我们将运行

    git checkout fix-native-dataset-drill-popover
    

    当您想切换回 master 时,运行

    git checkout master
    

运行 Metabase

  1. 现在我们将使用以下命令启动 Metabase 的后端服务器
clojure -M:run

完成后,您应该会看到一条消息,例如“Metabase 初始化完成”。保持终端应用程序中的此选项卡运行,否则 Metabase 将停止。

  1. 打开终端应用程序的另一个选项卡或窗口,然后使用此命令“构建”前端(所有 UI)
yarn build-hot

如果您在此步骤遇到问题,请确保您使用的是 Node.js (https://node.org.cn/) 的 LTS 版本。

  1. 在您选择的 Web 浏览器中,导航到 http://localhost:3000,您应该会看到 Metabase!

这是您计算机上的本地“服务器”,3000 是 Metabase 运行的“端口”。您可以在自己的计算机上运行多个不同的应用程序,每个应用程序在不同的端口上运行。请注意,如果您与他人共享任何以 localhost 开头的 URL,他们将无法访问它们,因为您的计算机默认情况下不向全世界开放,这是出于安全考虑。

要切换到不同的分支或切换回 master,请打开另一个终端选项卡,然后重复步骤 6、7 和 8。如果 Metabase 尚未运行,您还需要再次完成步骤 9 和 10。如果它已经运行,前端将自动重建。您可以通过切换到终端中的该选项卡来检查其进度——通常需要大约 15 秒,但这取决于您的硬件。

关闭 Metabase

如果您想停止 Metabase 运行,您可以退出终端程序,或者转到运行后端的选项卡,按 Ctrl+C 停止后端。大多数情况下,您无需执行此操作即可切换分支,但在某些情况下,您尝试查看的更改或功能是后端更改,您可能需要按 Ctrl+C 停止后端,然后通过再次完成步骤 9 来重新启动它。

构建 Metabase Uberjar

整个 Metabase 应用程序被编译并组装成一个单一的 .jar 文件,可以在任何现代 JVM 上运行。有一个脚本将执行所有步骤并为您输出最终的 artifact。您可以在运行构建脚本之前传递环境变量 MB_EDITION 来选择您要构建的版本。如果您不提供值,默认是 oss,它将构建社区版。

./bin/build.sh

运行构建脚本后,只需在 target/uberjar 中查找输出的 .jar 文件即可。

在容器化环境中构建 Metabase Uberjar

如果您想在不安装 Clojure、Java 和 Node.js 的主机上构建 Metabase,您可以在容器内构建 Uberjar,方法是运行

DOCKER_BUILDKIT=1 docker build --output container-output/ .

在执行命令之前,请确保您的 Docker Daemon 正在运行。运行命令后,您将在 ./container-output/app/metabase.jar 找到 Metabase JAR 文件。

阅读其他Metabase 版本的文档。

© . All rights reserved.