跳转到主要内容

由Mozilla扩展的Redash

项目描述

Redash扩展,用于sql.telemetry.mozilla.org

或者正如它应该被称为: St. Moredash ;)

https://circleci.com/gh/mozilla/redash-stmo.svg?style=svg https://codecov.io/gh/mozilla/redash-stmo/branch/master/graph/badge.svg CalVer - Timely Software Versioning

概述

继承Redash的Docker设置

redash-stmo使用Redash自己的Docker镜像进行开发,以实现开发/生产环境的紧密一致性,并在各个方面进行扩展,例如,拥有自己的docker-compose配置,自己的docker-entrypoint脚本。

特别地,它使用Mozilla的“rc”标签版本的Redash Docker镜像,包括(在撰写本文时,2019-06-13)许多来自Mozilla的伪临时和定期更新的Redash分叉的定制。每当从上游Redash发生“rebase”时,都会更新“rc”标签的Docker镜像,并将其放在Mozilla服务器上的“release”Redash环境中进行测试。

在继续之前,请查看Redash Docker安装指南。了解这些基础知识很重要,因为redash-stmo的许多决策都源于它。谢谢。

挂载于/extension下

当前工作目录(包含此README.rst的目录)由docker-compose在Docker容器内挂载到路径/extension

与Redash在/app下运行

由于它重用了Redash Docker镜像,您可以在Docker容器内的/app目录下找到所有Redash设置。

使用Redash的“entrypoints”进行发现

Redash发现新扩展的方式是通过使用Python包的所谓“入口点”,这是一种在Python包中指定并分发的元数据,Redash在运行时读取它以找到Redash扩展的文件系统位置。

这适用于三种类型的入口点

redash.extensions

用于扩展Redash Flask应用的Python可调用函数,例如 redash_stmo.data_sources.health:extension

redash.bundles

包含webpack构建过程中所需额外前端文件的Python包,例如 redash_stmo.data_sources.link

redash.scheduled_jobs

返回用于计划RQ作业参数的Python可调用函数,例如 redash_stmo.data_sources.health:scheduled_job

Webpack钩子

由于Redash扩展(如redash-stmo)也可以提供额外的Webpack包,开发设置会定期运行Redash的bundle-extension脚本,将文件从redash-stmo复制到webpack可以取到的正确位置(/app/client/app/extensions)。

有关更多信息,请参阅下面的webpack开发服务器部分。

开发工作流程

我们提供了一些方便的Make任务,您可以从主机机器上运行它们(而不是在Docker容器内)以简化此非平凡的应用程序设置。

构建和更新本地Docker镜像

以下许多助手会隐式运行docker-compose来启动Redash容器,如果本地Docker镜像不存在,则自动构建它。

如果您想单独构建本地Docker镜像或想获取最新的基本Redash Docker镜像版本(或Mozilla Redash分叉的子镜像),例如在Mozilla工作人员进行新的rebase事件中,请运行以下命令

make build
幕后

这将运行 docker-compose build --pull,这将拉取docker-compose设置中使用的Docker镜像的更新,包括Redash、Redis和Postgres镜像。

创建数据库

在命令行中运行此命令 一次 以创建Redash/redash-stmo设置的数据库

make database

这使用了Redash自身的功能,而redash-stmo只是设置为复用它。

幕后

这将运行docker-compose来创建运行Redash Python服务器(以及Redis和Postgres容器)的服务器容器。

然后初始化Redash所需的Postgres表。

安装npm模块

然后我们在服务器容器内安装Redash npm模块

make node_modules
幕后

这将在服务器的 /app 目录中运行 npm install,这是Redash Docker基础镜像中的Redash代码目录。

注意,redash-stmo开发设置将 /app/node_modules 目录挂载为一个单独的Docker卷,将由Docker维护,不会在Docker运行的主机机器中显示或传输。

启动容器

要启动用于工作环境的整个Docker容器集(Redash服务器、RQ工作器、Redis、Postgres),您只需运行此命令

make up
幕后

这非常简单,就是运行 docker-compose up,以启动redash-stmo Docker设置的容器。

注意:这 需要 在容器内安装npm模块并创建数据库!

运行webpack devserver

如果您正在开发一个包含额外webpack包的Redash扩展(这些包需要在Redash的webpack构建过程中包含在内,以便在客户端应用程序包中分发),您将需要使用webpack开发服务器。

当文件发生变化时,它会自动编译 Redash 客户端应用程序包,并通过运行在 8080 端口上的代理(而不是 Redash 常用的 5000 端口)来代理 Redash 服务器的请求。

使用上面步骤中的描述启动容器后,打开第二个终端并 额外运行

make devserver
幕后

这将运行另一个服务器容器的 webpack devserver 实例(与运行 make up 时的不同)并运行一个脚本,该脚本监听 /extension 目录中 .js.jsx 文件的变化。

检测到变化时,它会自动运行 Redash 的 bundle-extensions 脚本,该脚本负责将更改的扩展文件复制到 /app/client/app/extensions 目录,从而触发 webpack devserver 重新编译客户端应用程序包。

注意:这 需要 通过 http://localhost:8080/ 而不是 http://localhost:5000/ 打开 Redash 实例,以通过 webpack devserver。

启动 shell

如果您需要在服务器容器内进行任何调试或文件系统检查,可以通过运行以下命令创建一个 bash shell:

make bash
幕后

您在此处对 /extension 目录外(该目录作为 Docker 卷挂载到 Docker 主机机器的当前工作目录)所做的任何更改以及以下目录都不会被保留。

容器内挂载为 Docker 卷的目录列表

/extension

将主机机器上的当前工作目录(此 README.rst 所在的位置)映射到用于开发扩展的目录。

/home/redash/.cache

由 pip 和其他脚本使用。

/app/client/dist

用于保留 webpack 构建结果的目录,以便 webpack 构建在连续运行时不会花费很长时间。

/home/redash/.local

用于“用户安装”的 Python 包的目录。如果您愿意,可以使用 Docker 容器用户 Redash 简单地安装额外的 Python 包,使用 pip install --user <package>。这些包安装的脚本将位于 /home/redash/.local/bin,但也自动添加到 PATH 中。

/app/node_modules

npm 模块的目录,在容器内的 /app 中运行 npm install 时安装。保留以在连续运行之间利用本机 npm 缓存。

运行测试

运行基于 Python 的测试需要首先创建一个单独的数据库(由 test_database Make 任务实现)然后运行容器内的测试运行器。测试数据库与常规开发中使用的数据库不同(例如,以避免覆盖开发数据)。

目前不支持前端或集成测试。

要从主机机器上运行测试,请运行

make test

这将自动运行 test_database Make 任务,然后再运行测试。

幕后

在启动测试运行器时,它将使用常规服务器容器,但还将 REDASH_DATABASE_URL 环境变量设置为测试数据库,以防止覆盖您通过常规 Redash 界面(例如数据源、查询等)添加到数据库中的任何数据。

默认情况下,它使用 pytest/extension 中运行 Python 测试,并使用在 pytest.ini 中定义的参数。

如果您想向pytest添加更多参数,只需在pytest.ini文件中追加命令行参数。

或者,例如,如果您想使用pdb调试测试,请执行以下操作

从主机机器创建测试数据库

make test_database

在容器中启动Bash shell

make bash

在容器中设置REDASH_DATABASE_URL环境变量

export REDASH_DATABASE_URL="postgresql://postgres@postgres/tests"

切换到扩展代码目录

cd /extension

使用任何参数运行测试

pytest -vvv --pdb

问题和疑问

有关Redash-STMO的问题或疑问,请访问GitHub上的问题跟踪器提交工单。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

redash-stmo-2020.5.1.tar.gz (38.0 kB 查看散列值)

上传日期

构建分布

redash_stmo-2020.5.1-py3-none-any.whl (27.0 kB 查看散列值)

上传日期 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面