@defrex/autobuild-postgres-store
使用 PostgreSQL 和 一种
S3相容对象商店或Vercel Blob. 这是一个单独的软件包: 安装
页:1 @defrex/autobuild CLI 不安装其数据库/blob 提供者
依赖性。 嵌入适配器的项目直接添加:
bun add @defrex/autobuild-postgres-store
只有这个包 src/ 树和此 README 发布到 npm: 每
通过清单进口的已公布包装的消费者 exports
财务报告和审定财务报表 bin,所有生活在 src/名单 files 允许列表
把焦油球钉在那个位置上 bun tools/publish-contents-check.ts
存储器中 check 闸门失效了,其他东西会来 这个
拒绝默认允许列表是故意的: 此文件中的未来顶级文件
软件包(抓取脚本、现场测试固定、多腾v文件、编辑器)
除非许可证和支票
一起更新。 这个 src/testing/ 帮助者是只测试的表面——他们的
唯一的消费者是现场测试套房——并且被排除于柏油球之外
页:1 !src/testing/** 否定(AUT-500),所以水面通道不会重新升起
他们.
设置
要从主机部署的自订出单运行迁移,请选择 显示于 GitHub 发布, (中文(简体) ), 然后在专用的检出中获取并安装精确的寄存器修订版:
git clone --depth 1 --branch v0.6.0 --single-branch https://github.com/defrex/autobuild.git autobuild-v0.6.0
cd autobuild-v0.6.0
bun install --frozen-lockfile
DATABASE_URL=postgres://… bun run postgres:migrate
替换 v0.6.0 与所选的释放标签。 所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出所出.
适配器读传统 DATABASE_URL,这是Vercel的尼昂和
后格子存储集成注入; 设置 AB_POSTGRES_URL 以覆盖它
当然.
Schema 诊断指根 postgres:migrate 在此被绑定的脚本
释放检查。 数据库身份需要权限来创建表格,
和迁移过程中的迁移标记以及选择、插入、,
更新,并删除运行时产生的表格。 罚单计划有它的
拥有版本/ 检查和调值标记, 因此迁移一个已有的 BuildStore v1 数据库
增加项目范围票、评论和屏蔽器,而不替换
已建立 BuildStore 标记。 对失踪的、年长的/更新的或
校验和匹配的计程器失败; 计程器的创建绝不是隐含的 .
流行的遗赠票v1升级 也需要运行服务blob
后端、证书、访问模式和前缀。 具有环境意识的移徙
CLI 打开 blobs 懒散读取每个注册项目选中的有效
配置当必须推断所有权时。 未注册的项目
运行/配置参考文件不提出索赔。 无法读取的选定配置停止不变;
恢复他们的字节或分配所有遗留的团队 解锁迁移.
完整的注册所有者任务避免不相关的配置读取.
新鲜的安装,空出-v1升级和v2再运行仍然只有SQL.
已放行的主 v9 升级导入 AB_WEB_REPOSITORIES 一次在同一个里面
交易。 失败时,主要促进和登记进口回滚
门票 拥有者 projects add 财务报告和审定财务报表 tickets assign-team 独立拖带
它们的注册/回收日记在v9上,因此在回滚后仍然可以使用.
模棱两可的队伍不变地停了下来,由业主解决
ab-hosted-store tickets assign-team TEAM REPOSITORY --user IDENTITY 在此之前
重新运行迁移。 见托管服务迁移程序.
目前每个标记的 DDL —— 构建商店、 门票和认证—— 是不可改变的
一旦一个数据库安装了它 部署的数据库携带了精确的DDL
校验和 , 并编辑 DDL 。 每个
因此,计划改变是一个新版本——四步规则:冻结
上一个 DDL 逐字记录及其校验和, 在
migratePostgres,并更新已承诺的针入
schema-guard.test.ts编辑到当前任何 DDL 或版本,但无
匹配 pin 更新失败 集成套件, 并带有给这四个命名的消息
步骤.
指针是绊线,不是强制接合 它不能机械
强迫版本起落: 被放出的唯一承诺记录
校验和, 以及编辑当前 DDL 且只重新打入 pin 的作者
校验和 — 保留被绑定的版本和导出版本常数
不变——通过整合套间. 然后,部署的数据库仍然携带
dDL 已更改的版本的编辑前校验和以及下一个版本
openPostgresBuildStore 或者说 migratePostgres 诊断命名失败
那个原因。 每一次计划变化都要遵循所有四个步骤;迁移
诊断可以抓住事后的快捷键.
公共入境点
软件包暴露出四个子路径, 每个子路径以源模块命名 出版:
@defrex/autobuild-postgres-store- 完全适配器表面:openPostgresBuildStore, (中文(简体) ),openPostgresBuildStoreFromEnv, (中文(简体) ),migratePostgres票和杂货店.@defrex/autobuild-postgres-store/env—— URL 解析助手 (单位:千美元)resolvePostgresUrl, (中文(简体) ),describePostgresTarget) (中文(简体) ).@defrex/autobuild-postgres-store/schema- DDL计划、版本和校验和 常数、计划断言和migratePostgres。 。 。 .@defrex/autobuild-postgres-store/store—— 说openPostgresBuildStore,则PostgresBuildStore班级,PostgresBuildStoreOptions,以及EVENT_WAIT_POLL_MS。 。 。 .
货币
身份行在被锁定之前安全创建冲突
工作时 同步寄存器保证为一元并全部返回单元
存储记录。 同时尝试创建同样的结构 slock 生成一个
赢家; 所有其他呼叫者收到 build "<slug>" already exists 而不是说
原始 PostgreSQL 独有性错误.
import { openPostgresBuildStoreFromEnv } from '@defrex/autobuild-postgres-store'
const store = await openPostgresBuildStoreFromEnv(process.env)
S3 证书需要 GetObject 财务报告和审定财务报表 PutObject 在配置的桶/前缀上.
只有404号物品库被视为缺席;授权和服务错误
宣传。 Vercel 支持 Blob 读写符或 Vercel OIDC
与它的 Blob 商店 ID 配对 .
PostgresTicketDatabase.source({ repo, teamKey, lifecycle, claimedState?, createState? })
创建请求的入票源视图。 项目的部署用品
身份、可读标识前缀和生命周期名称。 车票
以 PostgreSQL 存储 text 并且未变换返回.
关于此适配器经认证的HTTP部署,请参见:
@defrex/autobuild-hosted-store-service 指南。 。 。 .