每次提交后,使用SVN从远程服务器部署到远程服务器

时间:2010-04-09 11:46:15

标签: php svn ftp automated-deploy

在每次提交后,我都没有找到使用来自SVN的FTP向远程服务器部署Php的解决方案。 如何通过FTP将唯一添加或编辑的文件上传到服务器,并从SVN中删除已删除的文件 我想写post post-commit脚本......

9 个答案:

答案 0 :(得分:13)

好问题!

我不确定以这种方式同步文件的PHP方法存在。

我通常会使用rsyncScriptFTP(商业)等第三方FTP同步工具来执行同步部分。

看一下phing,有很多FTP扩展(称为“任务”)。我虽然没有真正的世界经验。

此博客文章提供了许多想法和方法:Using phing to sync files with shared hosting

答案 1 :(得分:6)

您可以使用svn2web通过Ftp将每个提交的文件上传到服务器。 Svn2web是一个php脚本集合,可以用作svn钩子。您可以将ftp-server的地址,用户名和密码设置为目录上的svn属性。效果很棒!

答案 2 :(得分:3)

我使用http://svn2ftp.com这是一个SVN主机,允许在每次提交时远程部署到S / FTP!

答案 3 :(得分:3)

如果您不想自己管理脚本,但只是想要一些有效的东西,您可以尝试使用托管服务。我使用Deploy,它适用于您描述的场景。如果你只有一个项目要部署,它甚至是免费的。

答案 4 :(得分:2)

对于我们的php项目,我们使用Jenkins一个持续集成工具。我们的存储库服务器是subversion。每当我们进行代码更改时,我们都会使用jenkins作业与Beta staging&实时环境,然后部署应用程序。

您可以在http://www.michaelpeacock.co.uk/blog/entry/jenkins-ci-an-introduction-for-php-developers

上找到有关使用Jenkins进行PHP应用程序部署的更多信息

答案 5 :(得分:1)

mybe cron + bash脚本会是什么样的?

答案 6 :(得分:1)

你有没有看过Beanstalk?它允许您一键部署Subversion和Git项目到您的FTP服务器。它不是免费的。另一个免费的替代方案是设置一个持续集成服务器,它将运行一个rake脚本来进行部署。

答案 7 :(得分:1)

你怎么说,你从SVN结账到你的服务器,(从SVN创建工作副本到生产服务器),当你想要部署新版本时,你只需通过SSH连接到服务器并输入svn update,然后您将只部署已编辑的最新文件,并在不到一秒的时间内更新生产中的最新版本。

答案 8 :(得分:0)

最好的方法是(如果您的服务器是基于Linux的)将SVN导出到新目录,然后移动新目录以替换旧目录(最好的方法是使用符号链接到不同版本的现场)。这样一来,该站点将暂时不可用,如果您使用rsync并拥有一个大型站点,如果您更改了大量单个文件,该站点将被破坏,直到所有文件同步。

至于触发此过程,最好的方法是使用svn钩子。还要考虑在发布之前做一些自动化测试(基本功能),因为你可以在一段时间内破坏你的主干并且网站肯定会崩溃:)

我们目前正在生产环境中采用上述方法,设置如下:

  • 提交进入主干
    • 在实际提交之前,对代码运行测试以查看是否一切正常
  • 经过多次提交后,部署工作(通常由开发人员监督)
    • 再次运行测试
    • 如果他们成功了 - 一切正常
    • 如果失败,则返回旧导出,并且该网站再次完全正常运行

这些都是用PHP编写的,使用标准的控制台命令。