1

我在对结构部署脚本进行一些更改时遇到问题。我们正在从使用容易损坏的 NFS 挂载来托管我们的静态媒体转换为使用单独的 Web 服务器来托管和处理我们所有的静态媒体。

目标是,无论我们部署的环境(测试、产品等)如何,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
    ...
4

1 回答 1

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

于 2012-07-06T17:48:38.417 回答