我正在考虑开始将 Apache Airflow 用于一个项目,并且想知道人们如何使用气流管理持续集成和依赖关系。更具体地说说我有以下设置
3 Airflow 服务器:开发阶段和生产。
我有两个 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?另外,我如何管理将这两个 Dag 的代码持续集成到每个不同的气流环境(开发、登台、生产)中(我是否只是获取 jenkins 或其他东西以通过 ssh 连接到气流服务器并执行诸如 git pull origin BRANCH 之类的操作) )
希望这个问题不会太模糊,人们会看到我遇到的问题。
我们使用 docker 来运行具有不同依赖项的代码,并使用 Airflow DAG 中的 DockerOperator 来运行 docker 容器,也可以在远程计算机上运行(docker 守护进程已在运行)。实际上,我们只有一台气流服务器来运行作业,但还有更多运行着 docker 守护进程的机器,气流执行器调用这些守护进程。
为了持续集成,我们将 gitlab CI 与每个存储库的 Gitlab 容器注册表一起使用。使用 Jenkins 应该可以轻松做到这一点。
归档时间: |
|
查看次数: |
1825 次 |
最近记录: |