如何自动部署网站提交?

时间:2012-02-28 15:05:33

标签: svn hook commit

我计划设置一个SVN服务器用于测试目的。 现在是我的问题。 如何自动将提交的文件部署到我的开发/暂存网站的路径?

我知道我可以使用post-commit钩子进入SVN,但我该如何配置呢?

所有提交的文件必须部署在路径中的http://dev.staging.mywebsite.com中: /家庭/万维网的/ dev /分段/

存储库位于: /家庭/ SVN / mytestscript /

我该怎么做?

5 个答案:

答案 0 :(得分:9)

  

Nicholas Ding :为部署编写post-commit挂钩真是个坏主意。

     

Aar :你的理由是什么?检查您的网站,您提交的内容并不是很糟糕?你的论点是什么????

我必须同意Nicholas Ding。问题是,当您通过post-commit钩子进行部署时,您的开发人员正在等待提交完成。如果您的部署只需要30秒即可完成,那么开发人员等待您的提交后挂钩即可完成30秒。

如果每次开发人员提交文件时,您认为会发生什么?他们必须等待30秒才能完成该提交?您认为他们会如何看待Subversion,一般的开发过程以及您作为CM?将您的部署作为一个提交后挂钩并不是一个职业提升的举措。


我建议你看看Jenkins。 Jenkins就是所谓的持续构建系统。您可以设置Jenkins,这样每次开发人员进行提交时,Jenkins都会执行 build 。这样,在部署过程中,您就不会占用Subversion。

好处是Jenkins也可以进行部署。而且,如果部署失败,它可以通过电子邮件发送执行提交的开发人员。詹金斯甚至可以为你做一些测试。例如,您的部署可能有效,但更改的代码会导致错误。这可能是很好的检测。并且,您可以将可部署工件存储在Jenkins中,以防您在部署之前进行测试。如果测试有效,您可以返回Jenkins中的该构建,单击按钮,然后进行部署。

作为另一个奖励,Jenkins允许您的开发人员查看所有更改,构建和部署的历史记录。它还可以在您开始测试后向您显示所有测试的历史记录。如果您使用问题跟踪系统,如Jira,Bugzilla,MantisBF,Track或任何其他流行的系统,Jenkins可以与这些系统集成,以帮助您跟踪处理特定问题的构建。

即使您不需要编译任何内容(假设您的整个网页只是PHP文件和JavaScripts),您可以将Jenkins仅用于部署和测试,并且仍然可以从中获得很多好处。

Jenkins是一款非常棒的软件,它可以真正改善您的开发过程并处理您的问题,而不会降低Subversion的速度。另外,Jenkins非常容易使用,使用Jenkins可能比在post-commit钩子中找出你想做的事情更快。

答案 1 :(得分:1)

解决方案(自2008年起)位于http://imrannazar.com/Automated-Deployment-with-Subversion,仅在评论包含~~DEPLOY~~时才会展开。虽然这并没有否定@David W.提到的问题,但是时间延迟成为每次提交部署的威慑力。好坏取决于团队和项目!

答案 2 :(得分:0)

为部署编写post-commit挂钩真是个坏主意。

更好的解决方案是使用Capistrano(Ruby)或Fabric(Python)等工具。

答案 3 :(得分:0)

    提交后挂钩中的
  1. svn diff --summarizeDetails here

  2. 替代选择1(更大转移,更多时间和中断) - svn导出+删除所有旧数据+复制导出树

  3. 替代选择2 - 登台网站是额外的WC,提交后挂钩只是在其上发起svn up

答案 4 :(得分:0)

尝试Springloops它的自动部署软件。我使用它,我认为它是与BamBam任务管理系统集成的优秀工具。在http://www.springloops.io

上查看