在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))