在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中的配置设置?
在进一步研究了文档之后,我发现:a configuration page引用了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))