Apache 在服务器上部署dag文件的有效方法
在将新DAG部署到airflow时,是否遵循了任何最佳实践 我在google论坛上看到一些评论,说DAG保存在GIT存储库中,并且定期同步到airflow集群中的本地位置。Apache 在服务器上部署dag文件的有效方法,apache,airflow,airflow-scheduler,Apache,Airflow,Airflow Scheduler,在将新DAG部署到airflow时,是否遵循了任何最佳实践 我在google论坛上看到一些评论,说DAG保存在GIT存储库中,并且定期同步到airflow集群中的本地位置。关于这种方法,我有几个问题 我们是否为单独的环境维护单独的dag文件?(测试.生产) 如果新版本有bug,如何处理ETL回滚到旧版本 非常感谢您的帮助。如果您需要任何进一步的详细信息,请告诉我。以下是我们如何为团队管理它 首先在命名约定方面,我们的每个DAG文件名都与来自DAG本身(包括DAG版本)内容的DAG Id相匹配。
关于这种方法,我有几个问题
非常感谢您的帮助。如果您需要任何进一步的详细信息,请告诉我。以下是我们如何为团队管理它 首先在命名约定方面,我们的每个DAG文件名都与来自DAG本身(包括DAG版本)内容的DAG Id相匹配。这是很有用的,因为最终它是您在Airflow UI中看到的DAG Id,因此您将确切知道每个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': ['me@mail.com'],
'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\u nice\u DAG-v1.0.9.py
- 我们所有的DAG文件都存储在Git存储库中(除其他外)
- 每次在我们的主分支中完成合并请求时,我们的持续集成管道都会启动一个新的构建,并将我们的DAG文件打包成一个zip(我们使用Atlassian竹子,但还有其他解决方案,如Jenkins、Circle CI、Travis…)
- 在Bambol中,我们配置了一个部署脚本(shell),该脚本解压包并将DAG文件放置在Airflow服务器的/dags文件夹中
- 我们通常在DEV中部署dag进行测试,然后部署到UAT,最后部署到PROD。由于上面提到的shell脚本,我们只需在pumbolinui中单击一个按钮即可完成部署
嗨,Alexis,感谢您的澄清,如果有任何特定于环境的值,比如说HttpOperator中的URL,这些值是如何处理的,您可以为每个环境维护单独的dag文件,或者为相同的环境使用一些配置管理系统?Hello@SreenathKamath,对于特定于环境的值,我们在各自气流环境的气流变量中配置它们。您可以在“管理>变量”下的菜单中找到它们。在您的DAG中,您可以使用AuthFoo.Engult.Simult导入变量和“代码>变量”来调用这些变量。Thanks@alexis如果我只是用相同的名称更新文件(dag),我不需要打开它。@alexis我的另一个问题是如何测试dag文件?