使用全局设置的结构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中的配置设置?

在文档中进一步挖掘后,我发现:一个引用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))

最新更新