Перейти к основному содержимому

Merge jobs в dbt StarterEnterprise

Вы можете настроить merge job для реализации workflow непрерывного развертывания (continuous deployment, CD) в dbt. Merge job запускает dbt‑джоб в момент, когда кто‑то сливает Git pull request в production. Такой workflow создаёт бесшовный процесс разработки, при котором изменения в коде автоматически обновляют production‑данные. Кроме того, этот workflow можно использовать для запуска dbt compile, чтобы обновлять manifest окружения — это делает последующие запуски CI‑джобов более производительными.

Используя CD в dbt, вы можете воспользоваться deferral, чтобы собирать только изменённую модель и все downstream‑изменения. При использовании merge jobs состояние обновляется практически мгновенно, что позволяет всегда иметь самую актуальную информацию о состоянии в Catalog.

Запуск задач слияния в монорепозиториях

Если у вас monorepo с несколькими dbt‑проектами, слияние одного pull request в одном из проектов приведёт к запуску джобов для всех проектов, подключённых к этому monorepo. Чтобы избежать этого, вы можете использовать отдельные target‑ветки для каждого проекта (например, main-project-a, main-project-b) и тем самым разделить CI‑триггеры.

Предварительные требования

  • У вас есть учетная запись dbt.
  • Вы настроили подключение к вашему провайдеру Git. Эта интеграция позволяет dbt запускать задания от вашего имени при их триггере.
    • Если вы используете нативную интеграцию GitLab, вам нужен платный или self-hosted аккаунт с поддержкой GitLab webhooks и project access tokens. Если вы используете GitLab Free, merge requests будут запускать CI jobs, но обновления статуса CI job (успешное завершение или ошибка) не будут передаваться обратно в GitLab.
  • Для deferral (по умолчанию) убедитесь, что в окружении, на которое вы ссылаетесь при deferral, был как минимум один успешный запуск задания.

Настройка триггера задания при merge в Git

  1. На странице вашего окружения для деплоя нажмите Create job > Merge job.
  2. Параметры в разделе Job settings:
    • Job name — Укажите имя merge job.
    • Description — Добавьте описание задания.
    • Environment — По умолчанию установлено окружение, из которого вы создавали задание.
  3. В разделе Git trigger опция Run on merge включена по умолчанию. Каждый раз, когда PR выполняет merge (в базовую ветку, настроенную в окружении) в вашем репозитории Git, это задание будет запускаться.
  4. Параметры в разделе Execution settings:
    • Commands — По умолчанию включает команду dbt build --select state:modified+. Это сообщает dbt, что нужно собирать только новые или измененные модели и их downstream-зависимости. Важно: сравнение состояния возможно только когда выбрано deferred-окружение, с которым сравнивается state. Нажмите Add command, чтобы добавить другие команды, которые должны выполняться при запуске этого задания.
    • Compare changes against — По умолчанию настроено сравнение изменений с окружением, из которого вы создали задание. Эта опция позволяет dbt сравнить состояние кода в PR с кодом, выполняющимся в deferred-окружении, чтобы проверять только измененный код, вместо сборки полной таблицы или всего DAG. Чтобы изменить настройки по умолчанию, вы можете выбрать No deferral, This job для self-deferral или выбрать другое окружение.
  5. (опционально) Параметры в разделе Advanced settings:
    • Environment variables — Определите переменные окружения, чтобы настроить поведение проекта при запуске этого задания.
    • Target name — Определите имя target. Аналогично переменным окружения, эта опция позволяет настроить поведение проекта.
    • Run timeout — Отменить это задание, если время выполнения превышает значение таймаута.
    • dbt version — По умолчанию наследуется версия dbt из окружения. dbt Labs настоятельно рекомендует не менять настройку по умолчанию. Возможность менять версию на уровне задания полезна только при обновлении проекта до следующей версии dbt; в противном случае несовпадение версий окружения и задания может приводить к непредсказуемому поведению.
    • Threads — По умолчанию установлено 4 потока. Увеличьте количество потоков, чтобы повысить параллельность выполнения моделей.
Пример создания merge jobПример создания merge job

Проверьте push-события в Git

Merge-задания требуют push-событий, поэтому убедитесь, что они включены у вашего провайдера Git, особенно если интеграция с Git была настроена ранее. Для новой интеграции этот шаг можно пропустить, так как push-события обычно включены по умолчанию.

 Пример для GitHub

Ниже приведён пример для GitHub, когда push-события уже настроены:

Пример включённой опции Pushes в настройках GitHubПример включённой опции Pushes в настройках GitHub
 Пример для GitLab

Ниже приведён пример для GitLab, когда push-события уже настроены:

Пример включённой опции Push events в настройках GitLabПример включённой опции Push events в настройках GitLab
 Пример для Azure DevOps

Ниже показан пример создания нового триггера Code pushed в Azure DevOps. Если push-события ещё не настроены, создайте новую подписку service hooks для событий отправки кода:

Пример создания нового триггера push-событий в Azure DevOpsПример создания нового триггера push-событий в Azure DevOps

Нашли ошибку?

0
Loading