首页 > 解决方案 > Fabric 2 使用全局设置

问题描述

在 Fabric1 中,可以将一堆设置放入 fabfile.py 并从另一个包中导入实际任务。这是需要的,因为我将这些任务用于多个项目。

像这样:

from fabric.api import env

env.django_dir = '/home/someuser/django_app'
env.git_repo = 'some url'

然后任何结构代码都可以像这样访问变量:

from fabric.api import env

def clone():
    with cd('$HOME'):
        run('git clone {repo} {django_dir}'.format(
            repo=env.git_repo, django_dir=env.django_dir))

然而,似乎从 fabric2 不再存在这样的东西env
如何从另一个包中获取我的任务以使用 fabfile.py 中的配置设置?

标签: pythonfabricpython-fabric-2

解决方案


在文档中进一步挖掘之后,我遇到了:一个引用 Invoke的配置页面。

事实证明,所有需要做的就是在 fabfile.py 旁边创建一个新文件,名为fabric.py.

在 中声明你的变量fabric.py

django_dir = 'django_app'
git_repo = 'some url'

在任务中,您可以通过与c.config

def clone(c):
    # with isn't implemented yet, chain with &&
    c.run('cd $HOME && git clone {} {}'.format(
        c.config.git_repo, c.config.django_dir))

推荐阅读