0

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

我正在提交后挂钩中查看 svn export 命令,但这是否只推送更改?它如何与远程服务器进行身份验证?

4

2 回答 2

3

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

即使您可以使用提交后挂钩,这也不是一个好主意。用户在继续使用 Subversion 之前将被卡住,等待钩子完成。基本上,看起来 Subversion 每次提交都需要 10 到 20 秒(也就是说,如果您可以在 10 到 20 秒内部署整个存储库!)

处理这个问题的最好方法是使用 Jenkins。安装 Jenkins 并使其启动和运行大约需要 30 分钟。(这是一项网络服务,因此您可以通过浏览器访问它)。您还需要 30 分钟才能使部署正常工作。

是的,我要求您安装一个全新的网络服务器,但您不应该花费超过一两个小时的时间来让一切按照您想要的方式运行。这将比测试和让提交后挂钩工作快得多。

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

这也有很多优点:

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

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

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

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


也不,您不必使用 Jenkins。还有很多其他的持续构建系统。一些开源的,但一些相当不错的专有(即花钱)系统

于 2012-08-02T13:46:44.320 回答
2
  • svn export 不仅会发送更改。但是您可以导出到本地目录,并使用 rsync(它只会发送更改)。
  • 身份验证将由 rsync 处理。您可以使用不带密码的密钥为您自动执行此操作,但建议使用权限尽可能少的用户。
于 2012-08-02T09:28:26.580 回答