我正在考虑开始将Apache Airflow用于项目,并且想知道人们如何使用气流管理持续集成和依赖性。进一步来说 说我有以下设置
3个Airflow服务器:dev staging and production。
我有两个python DAG',其源代码我想保留在单独的回购中。 DAG本身很简单,基本上只是使用Python运算符来调用main(* args,** kwargs)。但是,main运行的实际代码非常大,并且可以扩展多个文件/模块。 每个python代码库都有不同的依赖关系 例如,
Dag1使用Python2.7 pandas == 0.18.1,requests = 2.13.0
Dag2使用Python3.6 pandas == 0.20.0和Numba == 0.27以及一些需要编译的cythonized代码
如何使用完全不同的依赖关系来管理运行这两个Dag的Airflow? 此外,我如何管理这些Dags的代码持续集成到每个不同的Airflow enivornment(dev,staging,Prod)(我只是将jenkins或其他东西ssh到气流服务器并执行类似git pull origin BRANCH的操作)
希望这个问题不是太模糊,人们会看到我遇到的问题。
答案 0 :(得分:0)
我们使用docker来运行具有不同依赖关系的代码和可以在远程计算机上运行docker容器的airflow DAG中的DockerOperator(已经运行了docker守护程序)。我们实际上只有一个气流服务器来运行作业,但是有更多的机器运行了docker守护程序,气流执行器会调用它们。
对于持续集成,我们使用gitlab CI和每个存储库的Gitlab容器注册表。詹金斯应该很容易做到这一点。