模式变更的 CI(GitHub Actions)
在每个 PR 中通过 GitHub Actions 运行迁移、dbt build 和 SQLFluff 检查,并使用临时数据库
模式变更的 CI(GitHub Actions) 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。
为什么要为 SQL 使用 CI
手动迁移会导致服务中断。CI 可以发现:
- 无法应用的迁移
- 会破坏现有测试的迁移
- 环境之间的架构漂移
- 代码检查和测试回归
稳健的 SQL CI 流水线
- 启动临时 Postgres(Docker / GitHub Actions 服务)
- 从头应用所有迁移
- 仅将新增迁移应用到暂存环境架构的副本
- 运行 dbt build / Flyway test / 应用测试
- 执行 SQLFluff 代码检查
- 生成架构差异报告
GitHub Actions:Postgres 服务
伴随作业启动 Postgres:
name: ci
on: [pull_request]
jobs:
test:
runs-on: ubuntu-latest
services:
pg:
image: postgres:16
env:
POSTGRES_PASSWORD: postgres
ports: ['5432:5432']
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Run migrations
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres
run: |
./scripts/migrate.sh代码检查步骤
将 SQLFluff 代码检查作为单独的作业:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- run: pip install sqlfluff && sqlfluff lint models/CI 中的 dbt 构建
对于 dbt 项目:
- name: dbt deps & build
run: |
pip install dbt-postgres
dbt deps
dbt build --profiles-dir profiles/ci架构差异
migra(或 apgdiff、schemahero)会显示迁移引入的更改:
pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PR仅向前策略
始终创建新的迁移;不要编辑已经应用的迁移。CI 会确保迁移序列能够从头应用。
向后兼容的架构更改
每个 PR 的架构都应与之前的应用版本保持兼容,这样您可以按任意顺序部署应用和数据库。CI 可以通过针对 NEW 架构运行 OLD 应用测试来验证这一点。
测试数据种子
CI 中的小型测试数据装载脚本可以让测试基于逼真的数据运行:
- name: Seed
run: psql $DATABASE_URL < seed/dev.sql迁移测试中的锁超时
在 CI 迁移中设置锁超时,以模拟生产环境行为:
ALTER DATABASE postgres SET lock_timeout = '5s';应用到生产环境
对于生产环境迁移,请使用一次性作业:
- 带重试机制的迁移运行器
- 失败时发送通知
- 记录完善的回滚流程
数据库分支模式
Neon、Supabase 等工具的分支功能可以为每个 PR 创建生产环境副本——针对真实数据副本运行迁移和应用测试。
回顾
SQL 应纳入 CI。
- 启动临时 PG 服务
- 应用迁移并执行 dbt build
- 使用 SQLFluff 进行代码检查
- 针对已迁移的架构运行应用测试
- 生成架构差异供审查
快速检查
向 GitHub Actions 作业添加 Postgres 数据库最简单的方法是什么?
常见问题解答
「模式变更的 CI(GitHub Actions)」课时是免费的吗?
是的 — 「模式变更的 CI(GitHub Actions)」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。
「模式变更的 CI(GitHub Actions)」这节课中我会学到什么?
在每个 PR 中通过 GitHub Actions 运行迁移、dbt build 和 SQLFluff 检查,并使用临时数据库 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 SQL Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「模式变更的 CI(GitHub Actions)」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 SQL Academy 课中编写并运行代码吗?
能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- DBT(数据构建工具)基础
- SQLFluff 与代码检查
- 测试 SQL:dbt 测试与 Great Expectations
- 模式变更的 CI(GitHub Actions)