我做了很多搜索,但找不到适合我的问题的解决方案。CodeIgniter项目的构建和部署工作流程
我想改进我的开发流程在我的项目中使用Phing。我目前的工作流程非常简单,容易失败。我现在的情况是这样的:
机器:
- 开发:我的机器和发展环境。
- 测试:测试和VCS服务器。当项目准备发布时,它们被“部署”到本机进行测试,代码也被推送到本机中的Git中央存储库。
- 生产:当项目准备好生产时,它们被“部署”到这台机器上。
目前的“部署”的过程:
变化在我的机器在feature
分支的应用。当更改准备发布时,我将它合并到develop
分支,然后从我的机器工作目录(而不是从本地或远程VCS)将其“部署”到测试服务器(它在物理上相同来自VCS的机器)。如果一切正常,我将develop
的更改合并到master
分支,然后像我为测试服务器一样“部署”到生产服务器。最后,我将develop
和master
分支中的本地更改推送到中央远程存储库中的通讯员分支。这些过程有时是通过手动或通过自定义shell脚本进行的。
的问题:
- 手动部署过程是不专业的,安全的做到这一点的方式。 (1)手动提供应该部署的文件列表,(2)需要更改要部署到不同服务器的代码,(3)没有回滚任务等。
- 我无法在构建或部署过程中执行某些任务,如测试,数据库迁移,清理缓存和日志文件,更改权限等。
- 也就是说,它不是一个简单的单一任务,因为它应该是!
的问题:
- Phing是一个构建工具。我也可以将它用于部署吗?
- 我认为应该从中央远程仓库(而不是我的工作目录)'开发'和'主'分支部署(在我的情况下)应用程序代码分别到'测试'和'生产'服务器。这是正确的方法吗?
- 考虑到前面的问题,我想使用Phing,我应该在哪里安装它?在我的开发机器还是在测试机器中?
什么是“配方”更有意义,应该用于“测试”和“生产”部署策略?
情况A1 - 测试部署(从本地机器运行)
(1)连接到试验机,(2)克隆 '开发' 从中央回购到根目录的文件夹分支,(3)删除.git目录,缓存和日志文件,(4)更改一些权限,(5)运行数据库脚本,(6)将符号链接更改为当前版本以及(7)重新启动Web服务器。案例A2 - 测试部署
从情况A1相同的步骤(从测试机运行)。案例B1 - 生产部署(从本地机器运行)
(1)连接至加工生产时机,(2)克隆 '主' 从中央回购到根目录的文件夹分支,(3)除去。 git目录,缓存和日志文件,(4)更改一些权限,(5)运行数据库脚本,(6)将符号链接更改为当前版本以及(7)重新启动web服务器。案例B2 - 生产部署
从案例B1相同的步骤(从试验机运行)。
我应该部署整个项目还是仅部署已更改的文件?什么更好更安全?
- 我的开发机器上应该有一个构建过程来运行测试,质量保证和缩小工具,还是应该在测试服务器上运行?
- 我应该手动运行部署策略还是作为服务器中的Git挂钩?