最近我们一直在寻找Mercurial的一些工作流程,因为我们将其用于Web开发。我们需要一种自动的方式将推送到测试和实例的更改传播到多个端点。这里的想法的示意图:使用Mercurial在多台服务器上自动部署网络
+-------+
|Dev |
| |
+-------+
| Push
+--------+
|
V
+-------+ Push +-------+
|Live |<--------|Test |
|server | |server |
+-------+ +-------+
| +-------+ | +-------+
+--->|Live 1 | +--->|Test 1 |
| | | | | |
| +-------+ | +-------+
| |
| +-------+ | +-------+
+--->|Live 2 | +--->|Test 2 |
| | | | | |
| +-------+ | +-------+
| |
| +-------+ | +-------+
+--->|Live 3 | +--->|Test 3 |
| | | |
+-------+ +-------+
基本上,这个想法是,所有我们的开发者需要做的是,一旦发展已经达到一个稳定的水平,发出推命令(没有按”不一定只是一个hg push
)到测试服务器,并从那里它会自动传播出去。然后,一旦测试完成,我们会将它从测试推到现场(或者,如果更容易,我们可以从开发推到现场),并且这也会传播到每个不同的实例。
如果我们可以相当容易地添加新的测试和活动实例(例如,如果IP被存储在可以被脚本读取的数据库中等等),那将是很好的。
完成此操作的最佳方法是什么?我知道Mercurial钩子。也许是一个钩子将运行的进程内脚本?我也研究过Fabric,这会是一个不错的选择吗?
另外,每个端点需要什么样的支持软件?如果每个服务器上都存在一个Mercurial存储库,它会是最简单的吗? SSH访问会有好处吗?等等......
感谢提詹金斯,我不知道它。无论如何,它看起来像SSH可能是要走的路。 – voithos 2011-06-16 18:16:13
@overthink - 非常有趣的感谢。你认为使用面料的好处是什么,比如做什么?另外 - 通过命令行参数传递IP - 当你有两套IP(例如两种类型的服务器)时,这种方式是否有效? – UpTheCreek 2013-01-17 11:29:07
@UpTheCreek我想你可以用make来做,但是fabric是专门为此构建的,并且通过ssh在远程机器上内置了主机,角色和运行命令的概念。所以你最终得到的任务定义非常简短,并且不需要很多机器来维护。对于多种服务器类型,我使用[结构角色](http://docs.fabfile.org/en/1.5/usage/execution.html#roles)。 – overthink 2013-01-17 14:27:26