我遇到了对结构部署脚本进行一些更改的问题。我们正在使用易于破解的NFS安装来托管我们的静态媒体,使用一个单独的网络服务器来托管和处理我们所有的静态媒体。
目标是无论我们正在部署的环境(测试,产品等),upload_static_content命令都只能在静态媒体服务器上运行。现在如果我们运行fab test upload_static_content
一切都很完美。静态内容最终位于正确目录中的正确服务器上。但是,如果我们运行fad test deploy
,静态内容最终会出现在测试网络服务器上,而不是目标服务器上。
def test():
...
env.hosts=testhosts
def prod():
...
env.hosts=prodhosts
def deploy():
# Do some deployment stuff
...
upload_static_content()
...
@hosts([static_server,])
@run_once
def upload_static_content()
# Upload static content to a different server
...
答案 0 :(得分:1)
您是否尝试过在Fabric 1.3中引入的执行功能?它应该尊重@hosts装饰。
def deploy():
# Do some deployment stuff
...
execute(upload_static_content)
这是文档:
http://docs.fabfile.org/en/1.4.2/usage/execution.html#intelligently-executing-tasks-with-execute