2012-05-28 155 views
2

我正在为我们最新的项目之一设置开发/部署周期。这是我正在尝试做的,使用mercurial部署网站

  1. 将最新代码提交给本地“mercurial”克隆。
  2. 将它推送到托管在“bitbucket”的中央回购站
  3. 在我的服务器上打开一些基于Web的管理控制台(这是我需要帮助的部分),它已经配置为使用bitbucket回购站自动获取最新的提交并显示一个列表。
  4. 选择其中一个版本并执行更新,以便有效更新网站。
  5. 如果最新版本存在一些问题,请使用相同的Web控制台回到以前的版本。

我使用“SourceTree”作为step1和step2,我想保留整个循环GUI的基础。任何人都可以提出我可以用于服务器端管理的任何工具(步骤3,4,5)?

+0

我假设你已经阅读了[通常的做法](http://stevelosh.com/blog/2009/01/deploying-site-fabric-and-mercurial/)?如果您直接从本地回购协议推送到部署的网站上的回购协议,则会覆盖#3和#4。不是#5,唉。我就是这样做的。 – Helgi

+0

是的,我已经看到了那篇博文......但我想让它更方便用户......为开发人员避免服务器配置头痛! –

+0

没有办法避免一次性安装。 –

回答

2

这是更简单的比你想象:

  1. 克隆使用到位桶作为源

  2. 您的服务器上的网站写一个小的web应用程序这在根文件夹中调用hg pull -u你的网页。 Mercurial记得从哪里拉,所以你在这里不需要任何东西。

第二个特点可以用hg id -i来实现(见this answer),以获得当前版本。把它写入文件。

现在您需要一个网页,列出该文件中的所有修订版,并在您点击其中一个版本时运行hg up -r <revision>

但也许更好的方法是直接从本地仓库使用hg push推送到Web服务器(请参阅here)。然后,您可以使用hook来更新文件并将最后一个修订保存到文件。

现在,您只需要一个Web服务即可恢复到以前的修订版本。

+0

“编写一个小型Web应用程序,调用hg pull -u”>这正是什么我正在寻找...一些小的web应用程序的实施,其中列出了可用的修订,并让我更新到一个。我正在考虑用python/fabric编写一个..但想看看是否有任何经过测试的解决方案... –

+2

如果您将存储库置于您的网站根目录中,请务必将您的Web服务器配置为拒绝访问到'.hg'目录,或者您的整个网站源代码和历史记录都将暴露给公众! –

0

Team City是一个可以为你做到这一点的网络应用程序。

它是一个持续集成服务器,但可以配置为只在您使用该应用程序时发布。

有许多持续集成服务器,我想大多数/所有可以做你想要的东西,所以搜索,如果这不符合你的需要。