Гайд по обновлению пакетов для Fusion
Узнайте, как обновить ваши пакеты, чтобы они были совместимы с движком dbt Fusion.
Введение
Спасибо, что вы являетесь частью сообщества dbt package hub и поддерживаете пакеты! Ваша работа делает экосистему dbt возможной и помогает тысячам команд повторно использовать проверенные модели и макросы для более быстрой и надёжной аналитики.
Это руководство поможет вам обновить ваши dbt‑пакеты, чтобы они были совместимы с Fusion. Пакет, совместимый с Fusion:
- Поддерживает версию dbt Fusion Engine
2.0.0 - Использует конфигурацию
require-dbt-versionдля указания совместимости в dbt package hub - Соответствует последней JSON‑схеме, представленной в dbt Core v1.10.0
В этом руководстве мы рассмотрим:
- Обновление пакета для совместимости с Fusion
- Тестирование пакета с Fusion
- Обновление конфигурации
require-dbt-versionс добавлением2.0.0 - Обновление README с указанием совместимости пакета с Fusion
Для кого это руководство?
Это руководство предназначено для любого мейнтейнера dbt‑пакетов, например dbt-utils, который хочет обновить свой пакет для совместимости с Fusion. Обновление пакета гарантирует, что пользователи получают актуальную версию, пакет остаётся надёжным в dbt package hub, а пользователи получают доступ к новым возможностям и исправлениям ошибок.
Пользователь подключает пакет в файле packages.yml или dependencies.yml. Если пакет исключает 2.0.0, Fusion сейчас выдаёт предупреждение, а в будущих релизах будет завершаться с ошибкой — аналогично поведению dbt Core.
В этом руководстве предполагается, что вы используете командную строку и Git для внесения изменений в репозиторий пакета. Если вы хотите создать новый пакет с нуля, рекомендуем начать с руководства по созданию dbt‑пакетов.
Предварительные требования
Перед началом убедитесь, что выполнены следующие условия:
- Мейнтейнер dbt‑пакета — вы поддерживаете пакет в dbt package hub или планируете создать новый.
- Установлен
dbt-autofix— установитеdbt-autofix, чтобы автоматически обновлять YAML‑файлы пакета в соответствии с последними изменениями dbt и лучшими практиками. Мы рекомендуем использовать/установить uv/uvx для запуска инструмента.- Запустите команду
uvx dbt-autofix, чтобы использовать последнюю версию инструмента. Другие варианты установки см. в официальной документацииdbt-autofix.
- Запустите команду
- Доступ к репозиторию — вам понадобятся права на создание ветки и выпуск обновлений/новой версии пакета. После обеспечения совместимости с Fusion потребуется создать новый тег версии.
- Установка или тестовое окружение Fusion — вы можете использовать Fusion локально (через бинарь
dbtf) или в CI‑пайплайне для проверки совместимости. - Работа с CLI и Git — вы уверенно используете командную строку и Git для обновления репозитория.
Обновите пакет
В этом разделе описано, как обновить пакет для совместимости с Fusion:
- Использование
dbt-autofixдля автоматического обновления YAML‑файлов - Тестирование пакета с Fusion
- Обновление конфигурации
require-dbt-version - Публикация нового релиза пакета
Если вы готовы начать, давайте приступим!
Запустите dbt-autofix
-
Перед началом убедитесь, что
dbt-autofixустановлен. Если нет, выполните командуuvx dbt-autofix. Дополнительные варианты установки см. в официальной документацииdbt-autofix. -
В репозитории вашего dbt‑пакета создайте рабочую ветку. Например:
git checkout -b fusion-compat -
Запустите
dbt-autofix deprecationsв директории пакета, чтобы автоматически обновить код пакета и переписать YAML‑файлы в соответствии с последней JSON‑схемой:dbt-autofix deprecations
Протестируйте пакет с Fusion
Теперь, когда вы запустили dbt-autofix, протестируйте пакет с Fusion, чтобы убедиться в совместимости перед обновлением конфигурации require-dbt-version. Дополнительную информацию о возможных ограничениях см. в документации по ограничениям Fusion. Вы можете протестировать пакет двумя способами:
- Запуск интеграционных тестов с Fusion — используйте, если в пакете есть интеграционные тесты в папке
integration_tests/. - Ручная валидация пакета — используйте, если в пакете нет интеграционных тестов. Рекомендуем создать их для упрощения проверки.
Запуск ваших интеграционных тестов с Fusion
Если в пакете есть папка integration_tests/ (например, как в dbt-utils), выполните следующие шаги:
- Перейдите в папку (
cd integration_tests) для запуска тестов. Если папкиintegration_tests/нет, вы можете создать её или перейти в директорию с тестами. - Запустите тесты с Fusion, выполнив команду
dbtf build(или другой доступный в вашем окружении исполняемый файл Fusion). - Если ошибок нет, ваш пакет, вероятно, поддерживает Fusion, и вы готовы обновить
require-dbt-version. Если есть ошибки, их необходимо исправить перед обновлениемrequire-dbt-version.
Ручная валидация вашего пакета
Если в пакете нет интеграционных тестов, выполните следующие шаги:
- Создайте небольшой dbt‑проект, совместимый с Fusion, который устанавливает ваш пакет и содержит файл
packages.ymlилиdependencies.yml. - Запустите проект с Fusion, используя команду
dbtf run. - Убедитесь, что модели собираются успешно и нет предупреждений. При наличии ошибок или предупреждений их нужно устранить. Если проблемы сохраняются, обратитесь за помощью в канал #package-ecosystem в Slack.
Обновление require-dbt-version
Обновляйте конфигурацию require-dbt-version только после тестирования и подтверждения, что пакет работает с Fusion.
-
Обновите
require-dbt-versionвdbt_project.yml, добавив2.0.0. Мы рекомендуем использовать диапазон версий для обеспечения стабильности:require-dbt-version: [">=1.10.0,<3.0.0"]Это указывает, что пакет поддерживает как dbt Core, так и Fusion. dbt Labs использует эти метаданные релиза, чтобы отметить ваш пакет бейджем совместимости с Fusion в dbt package hub. Пакеты без этих метаданных не отображают бейдж совместимости с Fusion.
-
Закоммитьте и отправьте изменения в репозиторий.
Публикация нового релиза
- После коммита и отправки изменений опубликуйте новый релиз пакета, смёрджив ветку в main (или в основную ветку, используемую в вашем репозитории).
- Обновите
README, указав, что пакет совместим с Fusion. - (Необязательно) Анонсируйте обновление в канале #package-ecosystem в dbt Slack.
По возможности добавьте шаг в CI‑пайплайн, который запускает dbtf build или эквивалент, чтобы обеспечить постоянную совместимость с Fusion.
Теперь ваш пакет совместим с Fusion, и dbt package hub отражает эти изменения. В итоге вы:
- Создали ветку для обеспечения совместимости с Fusion
- Запустили
dbt-autofix deprecations - Проверили, закоммитили и протестировали изменения
- Обновили
require-dbt-version: [">=1.10.0,<3.0.0"], включив2.0.0 - Опубликовали новый релиз
- Анонсировали обновление (необязательно)
- Отпраздновали получение бейджа совместимости с Fusion 🎉
Финальные мысли
Теперь, когда вы обновили пакет для совместимости с Fusion, пользователи могут использовать его вместе с Fusion! 🎉
Обновляясь уже сейчас, вы обеспечиваете более плавный пользовательский опыт, прокладываете путь для следующего поколения dbt‑проектов и помогаете Fusion достичь полной стабильности.
Если у вас есть вопросы или вы столкнулись с проблемами:
- Присоединяйтесь к обсуждению в канале #package-ecosystem в Slack.
- Создайте issue в репозитории dbt-autofix на GitHub.
И напоследок — спасибо за вклад в развитие экосистемы dbt — по одному пакету за раз 💜.
Часто задаваемые вопросы
Ниже приведены ответы на часто задаваемые вопросы об обновлении пакета для совместимости с Fusion.