将更改从subversion存储库推送到实时服务器

时间:2012-08-02 09:21:40

标签: svn

我正在实施一个系统,将更改提交到subversion存储库。希望立即将这些更改推送到远程服务器(最好没有.svn垃圾)。

我正在查看post-commit钩子中的svn export命令,但这只会推动更改吗?和它如何通过远程服务器进行身份验证?

2 个答案:

答案 0 :(得分:3)

您确定要自动将Subversion的每个版本推送到服务器吗?我认为你想做一些测试,然后挑选你想要部署的修订版。

即使您可以使用post-commit挂钩工作,也不是一个好主意。在继续使用Subversion之前,用户将等待挂钩完成。基本上,看起来Subversion每次提交需要10到20秒(即如果你可以在10到20秒内部署整个存储库!)

处理此问题的最佳方法是使用Jenkins。安装Jenkins并启动并运行大约需要30分钟。 (这是 Web服务,因此您可以通过浏览器访问它)。这将需要另外30分钟才能使部署正常运行。

是的,我要求你安装一个全新的网络服务器,但它不应该花费你一两个多小时才能让你的一切按照你想要的方式运行。这比测试和提交后提交钩子要快得多。

Jenkins将观看您的Subversion存储库。当它检测到更改时,它可以运行部署脚本。例如,对服务器执行rsync。甚至可能在实施更改之前关闭服务器。

这也有很多好处:

  • Jenkins将保留所有部署的完整记录。
  • Jenkins可以让您知道部署是成功还是现在。
  • 您可以轻松访问更改历史记录。

并且,您可以扩展此功能。例如,我提到在每次更改后进行部署可能不是一个好主意。也许你可以设置一个测试服务器,让Jenkins部署到那个并运行测试。 Jenkins可以在Jenkins内部报告测试结果。如果所有测试都通过,那么让Jenkins部署到生产服务器。

或许,您可能正在谈论部署到测试服务器而不是生产。很好,让Jenkins对测试服务器进行部署并运行测试。然后,您可以检查测试,然后在Jenkins内部对生产服务器进行一键式部署。

也许您只想在服务器不那么繁忙的某些时候进行部署。您可以在Jenkins中设置第二个作业,该作业仅在您的系统上没有这么多用户的情况下在凌晨2:00运行。


也不是,你必须使用詹金斯。那里还有很多其他的连续构建系统。一些开源的,但一些非常好的专有(即成本金钱)系统

答案 1 :(得分:2)

  • svn export不仅会发送更改。但是你可以导出到本地 目录,并使用rsync(只会发送更改)。
  • 身份验证将由rsync处理。您可以使用没有密码的密钥为您自动执行此操作,但建议尽可能使用权限最少的用户。