构建 Metabase
本文档将向您展示如何在自己的计算机上构建和运行 Metabase,以便您可以试用或测试正在开发的功能。您还可以使用预构建的 Docker 镜像运行 Metabase 的开发分支。
安装先决条件
如果您使用的是 macOS,您需要首先安装 Xcode 命令行工具,运行:
xcode-select --install
要完成 Metabase 代码的任何构建,您需要安装以下内容。
-
Clojure (https://clojure.net.cn) - 根据您的操作系统按照指南安装最新版本
-
Java Development Kit JDK (https://adoptopenjdk.net/releases.html) - 您需要安装 JDK 21(有关 Java 版本的更多信息)
-
Node.js (https://node.org.cn/) - 最新 LTS 版本
-
Node.js 的 Yarn 包管理器 - 1.x 版本的最新版本 - 您可以在任何操作系统中通过运行以下命令安装它:
npm install --global yarn
在最新的稳定版 Ubuntu/Debian 上,除 Clojure 外,所有上述工具都可以通过以下方式安装:
sudo apt install openjdk-21-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 上进行开发,您应该在 Windows Subsystem for Linux (WSL) 上运行 Ubuntu 并遵循 Ubuntu/Linux 的说明。
在远程容器中使用 VS Code 进行开发
或者,无需明确安装上述依赖项,请遵循有关使用 Visual Studio Code 及其远程容器支持的指南。
克隆 Metabase 仓库
安装所有构建工具后,您需要从 GitHub 克隆 Metabase 仓库。
-
创建一个名为
workspace
的文件夹(您可以将其命名为这个或任何您想要的名称),它将存储 Metabase 代码文件。 -
打开您的终端应用程序,并使用以下命令导航到您的工作区文件夹:
cd ~/workspace
- 运行以下命令将 Metabase “克隆”到此文件夹中,使用 GitHub 上 Metabase 仓库的 URL:
git clone https://github.com/metabase/metabase
选择您要运行的分支并运行它
这是您将反复使用的部分。
Metabase 的“官方”分支名为 master
,其他功能开发分支在获得批准后会合并到其中。因此,如果您想在此之前尝试某个功能,您需要知道该分支的名称,以便您可以切换到它。操作步骤如下:
-
打开您的终端应用程序
-
导航到您存储 Metabase 代码的位置。如果您完全按照本指南操作,您将通过输入以下命令到达:
cd ~/workspace/metabase
-
运行以下命令“拉取”最新代码:
git pull
您应该每次都这样做,以确保您的计算机上拥有所有最新的 Metabase 分支和代码。这也是您在某个功能分支有人对其进行更改时获取更新的方式。
-
通过转到 GitHub 上该功能的“拉取请求”页面并从那里复制分支名称来查找要运行的分支的名称。这是一个示例 PR 页面,分支名称为
fix-native-dataset-drill-popover
。 -
通过运行以下命令切换到该分支,或“检出”该分支:
git checkout <branch-name>
如果我们想切换到上一步中的分支,我们将运行:
git checkout fix-native-dataset-drill-popover
当您想切换回
master
时,运行:git checkout master
运行 Metabase
- 现在我们将通过以下命令启动 Metabase 的后端服务器:
clojure -M:run
完成后,您应该会看到一条消息,例如“Metabase 初始化完成”。请保持此终端应用程序选项卡运行,否则它将停止 Metabase。
- 打开您的终端应用程序的另一个选项卡或窗口,然后使用此命令“构建”前端(所有 UI):
yarn build-hot
如果您在此步骤中遇到问题,请确保您使用的是 Node.js (https://node.org.cn/) 的 LTS 版本。
- 在您选择的 Web 浏览器中,导航到
https://: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 上运行。有一个脚本将执行所有步骤并为您输出最终工件。您可以在运行构建脚本之前传递环境变量 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 守护程序正在运行。运行命令后,您将在 ./container-output/app/metabase.jar
找到 Metabase JAR 文件。
阅读其他版本的 Metabase 的文档。