CI для изменений схемы (GitHub Actions)
Запускайте миграции, сборку dbt и проверку SQLFluff внутри GitHub Actions при каждом PR, используя временные базы данных
«CI для изменений схемы (GitHub Actions)» — бесплатный урок SQL Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.
Зачем нужен CI для SQL?
Ручные миграции приводят к сбоям. Непрерывная интеграция выявляет:
- миграцию, которую не удаётся применить
- миграцию, нарушающую существующие тесты
- расхождение схем между окружениями
- регрессии линтинга и тестов
Надёжный конвейер CI для SQL
- Запустить временный Postgres (Docker / сервис GitHub Actions)
- Применить все миграции с нуля
- Применить только новые миграции к копии схемы промежуточного окружения
- Запустить dbt build / тест Flyway / тесты приложения
- Выполнить линтинг с помощью SQLFluff
- Сформировать отчёт о различиях схем
Сервис Postgres в GitHub Actions
Запустите 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/Сборка dbt в CI
Для проектов 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 может проверить это, запустив тесты OLD приложения для NEW схемы.
Заполнение тестовыми данными
Небольшой скрипт с тестовыми данными в CI позволяет запускать тесты на реалистичных данных:
- name: Seed
run: psql $DATABASE_URL < seed/dev.sqlТайм-ауты блокировок в тестах миграций
Задайте lock_timeout в миграциях CI, чтобы имитировать поведение в рабочей среде:
ALTER DATABASE postgres SET lock_timeout = '5s';Применение в рабочей среде
Для миграций в рабочей среде используйте одноразовое задание:
- средство запуска миграций с повторными попытками
- уведомления о сбоях
- задокументированная процедура отката
Шаблон базы данных для ветки
Такие инструменты, как ветвление Neon и Supabase, позволяют создать копию рабочей базы для каждого PR — запускать миграции и тесты приложения на копии с реальными данными.
Итоги
SQL должен проходить через CI.
- Запускайте временный сервис PG
- Применяйте миграции и выполняйте сборку dbt
- Выполняйте линтинг с помощью SQLFluff
- Запускайте тесты приложения для схемы после миграции
- Сравнивайте схемы для проверки при просмотре изменений
Быстрая проверка
Как проще всего добавить базу данных Postgres в задание GitHub Actions?
Часто задаваемые вопросы
Урок «CI для изменений схемы (GitHub Actions)» бесплатный?
Да — полный текст урока «CI для изменений схемы (GitHub Actions)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.
Чему я научусь в уроке «CI для изменений схемы (GitHub Actions)»?
Запускайте миграции, сборку dbt и проверку SQLFluff внутри GitHub Actions при каждом PR, используя временные базы данных Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SQL Academy?
Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «CI для изменений схемы (GitHub Actions)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SQL Academy?
Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы DBT (Data Build Tool)
- SQLFluff и статический анализ
- Тестирование SQL: тесты dbt и Great Expectations
- CI для изменений схемы (GitHub Actions)