【问题标题】:Apache Airflow Continous Integration Workflow and Dependency managementApache Airflow 持续集成工作流和依赖管理
【发布时间】:2017-12-14 08:51:39
【问题描述】:

我正在考虑开始将 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? 另外,我如何管理将这两个 Dags 的代码持续集成到每个不同的 Airflow enivornment(dev、staging、Prod)(我只是让 jenkins 或其他东西 ssh 到气流服务器并执行 git pull origin BRANCH 之类的操作吗? )

希望这个问题不会太模糊,人们会看到我遇到的问题。

【问题讨论】:

    标签: python airflow


    【解决方案1】:

    我们使用 docker 运行具有不同依赖项的代码,并使用气流 DAG 中的 DockerOperator,它可以运行 docker 容器,也可以在远程机器上运行(docker 守护程序已经运行)。实际上,我们只有一个气流服务器来运行作业,但还有更多运行 docker 守护进程的机器,气流执行器调用它们。

    对于持续集成,我们将 gitlab CI 与每个存储库的 Gitlab 容器注册表一起使用。使用 Jenkins 应该很容易做到这一点。

    【讨论】:

    • 感谢@Him,我或多或少得出了相同的结论,但是python依赖项包含在virtualenv中而不是使用DockerOperator,但很可能最终会切换到那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多