Ответ 1
Вот как мы управляем этим для нашей команды.
Во-первых, с точки зрения соглашения об именах, каждое из наших имен файлов DAG соответствует идентификатору DAG из содержимого самой DAG (включая версию DAG). Это полезно, потому что в конечном итоге это идентификатор DAG, который вы видите в пользовательском интерфейсе Airflow, чтобы вы точно знали, какой файл использовался за каждым DAG.
Пример для DAG, подобный этому:
from airflow import DAG
from datetime import datetime, timedelta
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2017,12,05,23,59),
'email': ['[email protected]'],
'email_on_failure': True
}
dag = DAG(
'my_nice_dag-v1.0.9', #update version whenever you change something
default_args=default_args,
schedule_interval="0,15,30,45 * * * *",
dagrun_timeout=timedelta(hours=24),
max_active_runs=1)
[...]
Имя файла DAG будет следующим: my_nice_dag-v1.0.9.py
- Все наши файлы DAG хранятся в репозитории Git (помимо прочего)
- Каждый раз, когда в нашей основной ветке выполняется запрос на слияние, наш конвейер непрерывной интеграции запускает новую сборку и упаковывает наши файлы DAG в zip-архив (мы используем Atlassian Bamboo, но есть и другие решения, такие как Jenkins, Circle CI, Travis...)
- В Bamboo мы настроили сценарий развертывания (оболочку), который распаковывает пакет и помещает файлы DAG на сервер Airflow в папку /dags.
- Обычно мы тестируем группы DAG в DEV, затем в UAT и, наконец, в PROD. Развертывание выполняется одним нажатием кнопки в пользовательском интерфейсе Bamboo благодаря вышеописанному сценарию оболочки.
Преимущества
- Поскольку вы включили версию DAG в свое имя файла, предыдущая версия файла DAG не перезаписывается в папке DAG, поэтому вы можете легко вернуться к ней
- Когда ваш новый файл DAG загружается в Airflow, вы можете узнать его в пользовательском интерфейсе благодаря номеру версии.
- Поскольку ваше имя файла DAG = DAG Id, вы даже можете улучшить сценарий развертывания, добавив некоторую командную строку Airflow для автоматического включения новых групп DAG после их развертывания.
- Поскольку каждая версия групп доступности баз данных историзирована в Git, мы всегда можем вернуться к предыдущим версиям, если это необходимо.