内容提要
昨天发布了pgxn/pgxn-tools Docker镜像的v1.6.0版本,新增了pgrx-build-test命令,类似于现有的PGXS扩展的pg-build-test实用程序,但适用于pgrx扩展。该命令用于安装、构建和测试pgrx扩展。发布pgrx扩展的模式与以前相同,可以从模板生成META.json文件。希望在PGXN上看到更多的pgrx项目。
延伸解读
pgrx-build-test 的版本要求与依赖
pgrx-build-test 要求 pgrx 版本至少为 v0.11.4,它会从 Cargo.toml 中提取 pgrx 版本并安装。这一要求源于 pgrx v0.11.4 中由 Eric Ridge 和 @Jubilee 贡献的改进,使得工具能透明地工作。因此,使用旧版 pgrx 的项目需要先升级才能利用此命令。
结合 PGXS 风格测试的灵活性
pgrx-build-test 不仅运行 Rust/pgrx 测试,还会检查是否存在配置了 installcheck 的 Makefile,如果存在则运行 make installcheck。这允许项目同时包含 PGXS 风格的 pg_regress 测试,如 pg-jsonschema-boon 所做的那样,从而在 pgrx 测试之外增加一层回归测试,提高扩展的可靠性。
发布 pgrx 扩展的 META.json 生成策略
发布 pgrx 扩展时,可以从模板生成 META.json 文件。例如,pg-jsonschema-boon 的 Makefile 通过从 Cargo.toml 读取版本并替换 @CARGO_VERSION@ 来生成 META.json。发布工作流在语义化版本标签推送时触发,使用 pgxn-bundle 打包并包含生成的 META.json,然后通过 pgxn-release 发布到 PGXN。
Q&A
pgrx-build-test命令的主要功能是什么?
pgrx-build-test命令用于安装、构建和测试pgrx扩展,类似于pg-build-test。
如何使用pgrx-build-test命令加速Rust构建?
pgrx-build-test命令通过添加Swatinem/rust-cache动作来缓存依赖,从而加速Rust构建。
发布pgrx扩展的工作流程是怎样的?
发布pgrx扩展的工作流程包括生成META.json文件并使用pgxn-bundle进行打包和发布。
pgrx-build-test命令需要什么版本的pgrx?
pgrx-build-test命令要求pgrx版本为v0.11.4或更高。
如何从模板生成META.json文件?
可以通过读取Cargo.toml中的版本信息并替换模板中的占位符来生成META.json文件。
pgrx扩展的测试是如何进行的?
pgrx扩展的测试使用cargo pgrx test命令进行,并可通过Makefile配置运行PGXS风格的pg_regress测试。