svn - 如何使用 svn export 将文件从开发或 QA 移动到生产环境?

标签 svn

您会将文件从 DEV 移动到 Prod 或 QA 移动到 Prod 吗?您如何在您的环境中使用 svn export ?您可以分享任何方便的脚本吗?

我查看了其他线程,但他们没有足够的信息。

我想知道从 QA、DEV 或 Staging 将应用程序/数据库更新推送到生产环境的最佳实践。这是一个 LaMP 环境。

最佳答案

首先,我不会将文件直接从开发或质量保证移动到生产。就像您的问题所暗示的那样,我会将标记版本从您的 SCM(在本例中为颠覆)直接部署到您各自的环境中。

从广义上讲,我建议使用专门的部署工具,例如 Capistrano 。学习该工具和设置部署脚本需要一些前期时间投入,但是稍后能够说“cap部署qa”或“cap回滚生产”来更改正在运行的版本的力量只需几秒钟的时间就可以a) 收回最初的时间投入,b) 当出现问题时可以保住你的屁股。

为了直接解决您的问题,如果您手动完成,我会推荐类似这样的过程(在必要时插入 sudo):

  1. 拥有一个 /opt/my_app/ 目录,其中包含多个包含不同版本的子目录,以及指向当前版本的“当前”符号链接(symbolic link)。
  2. 将您的 apache 配置指向 /opt/my_app/current
  3. 要推出新版本,请运行“svn export https://my_repo/my_app/opt/my_app/1.2.3”(假设新版本为 1.2.3)。
  4. 更改符号链接(symbolic link):“rm/opt/my_app/current; ln -s/opt/my_app/1.2.3 opt/my_app/current
  5. 根据需要重新启动 Apache 或其他进程。

数据库更新是一个更有趣的问题。就我个人而言,我喜欢 Rails 的迁移。如果您手动执行此操作,则可能会在项目中包含几个 shell 脚本来分别更新数据库并将其回滚,但正确保持这些版本会有点棘手,因为它们仅特定于一个特定版本。我建议使用像 Migrations 这样的现有系统(它可以与 Rails 分开使用 - 我将它视为某些基于 Java 的项目的唯一 Ruby 组件),或者将其作为一个单独的问题提出。

关于svn - 如何使用 svn export 将文件从开发或 QA 移动到生产环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/937786/

相关文章:

svn - CentOS 安装mod_dav_svn

svn - Java 文件中的 Subversion 用户名和上次修改日期

powershell - powershell svn 的获取内容函数

eclipse - Eclipse 中没有 Subversion 图标,也没有团队操作,已尝试过 Subclipse 和 Subversive

performance - Windows 7 上的 Subversion 慢得让人难以忍受

Eclipse 插件开发 - 从团队提供商获取信息

SVN提交失败: Directory out of date

git - 为什么 `git-svn`卡在 `Found possible branch point:`

svn - 有没有办法防止在 Tortoise SVN 中保存身份验证

svn - 从特定的主干修订版在 Subversion 中创建分支