部署策略,PHP + SVN

Ahm*_*mad 7 php svn deployment minify

我只想讨论我们的部署策略并找出其中的差异.这个过程是这样的

- >特定版本的开发完成

- >所有开发人员将他们的文件提交到trunk

- >使用TOAD比较数据库模式并迁移更改

- >在SVN上创建一个新分支

- >使用SVN导出(删除.svn文件夹等)

- >缩小JS,CSS

- >上传到登台服务器

- >执行测试周期

- >修复分支上的错误并验证它们

- >重新缩小JS,CSS [如果需要]

- >上传到生产服务器

- >当我说上传时,它意味着通过SSH将文件上传到/ var/www/html文件夹

- >首先上传js,css,images

- >然后上传php文件

- >上传期间排除目录,如用户上传的图片等.

- >执行测试周期

- >修复错误并再次上传(可能需要重新缩小 - 几个文件)

- >验证错误

- >验证完成

- >将分支提交到svn

- >将更改合并回主干

- > commit trunk [在此部署周期中,没有人将任何文件提交到主干]

这个过程非常复杂,需要很多关注.

关于如何改进它的任何建议?

Tor*_*Tor 2

我使用了以下部署路径。它消除了您将文件重新上传到不同目录的许多需要。初始设置后,您需要做的最复杂的工作是每个测试位置中的“svn update”命令。

此设置假设您使用配置文件来指向资产、图像和 css 等目录。

  1. 初始化存储库。始终有一个唯一的用户进行生产和测试检查。这允许在紧急情况下从实时服务器返回到主干的独特提交。
  2. 开发人员开发并提交。构建版本带有构建号标记,以及当它们应该准备好项目时的 LIVE 标记。
  3. 结帐是在测试服务器上进行的。如果一切顺利的话。#dev.example.com/~test/project/
  4. svn 更新到生产服务器上的测试目录。#example.com/~test/project
  5. svn 将生产服务器上的主项目目录更新为 LIVE 标签。#example.com
  6. 如果步骤 3 至 5 中出现任何异常,请返回到步骤 2。

所有项目都有一个配置文件,允许设置开发数据库、共享图像等的路径。config.dist.php 作为命名模式效果很好。每次签出都会将 config.dist.php 复制到 config.php。这允许许多配置而不会发生 SVN 冲突。

每个配置文件通常都有一些代码,例如

<?php
    #hopefully, your project can leave these first two constants set to '', because relative paths work for everything
         define('localPath', '/home/www/projectName');
         define('baseURL', 'http://example.com/~projectName');

    #if you want to write everything over a shared filesystem for instance, uploads.
         define('localAssetsDirectory', '/sharedFileSystem/localPath');

    #if you want to include a shared assets directory
         define('assetsURL', 'assets/images');

    #OR if you want to host assets in one location.
         define('assetsURL', 'http://assets.example.com/images/'    
 ?>
Run Code Online (Sandbox Code Playgroud)

生产和开发服务器上的所有测试版本只能通过受限制的 ip 访问,并放在 .htaccess 文件后面。Apache 配置为不提供 .svn 目录服务。