我做了很多搜索,但找不到适合我问题的解决方案。
我希望使用Phing在我的项目中改进我的开发工作流程。我目前的工作流程非常简单,容易失败。我目前的情况如下:
机器:
当前的“部署”流程:
应用程序更改在我的计算机上的feature
分支中进行。当更改准备发布时,我将其合并到develop
分支,然后将其从我的机器工作目录(不是从本地或远程VCS)“部署”到测试服务器< / strong>(它与VCS在物理上是同一台机器)。如果一切正常,我将更改从develop
合并到master
分支,然后我将其“部署”到生产服务器,就像我对测试服务器一样。最后,我将develop
和master
分支中的本地更改推送到中央远程存储库中的通信分支。这些过程有时是手动完成的,也可以通过自定义shell脚本完成。
问题:
问题:
哪些“食谱”更有意义,我应该用于“测试”和“生产”部署策略吗?
案例A1 - 测试部署(从本地计算机运行)
(1)连接到测试机,(2)克隆'develop'分支从central repo到webroot文件夹,(3)删除.git目录,缓存和日志文件,(4)更改一些权限,(5)运行数据库脚本, (6)将符号链接更改为当前版本,并(7)重新启动webserver。
案例A2 - 测试部署(从测试机器运行)
与案例A1相同的步骤。
案例B1 - 生产部署(从本地机器运行)
(1)连接到produciton机器,(2)克隆'master'分支从central repo到webroot文件夹,(3)删除.git目录,缓存和日志文件,(4)更改一些权限,(5)运行数据库脚本, (6)将符号链接更改为当前版本,并(7)重新启动webserver。
案例B2 - 生产部署(从测试机运行)
与案例B1相同的步骤。
我应该部署整个项目还是仅部署更改的文件?什么是更好,更安全?
答案 0 :(得分:1)
我个人的工作流程与此类似: http://marcelog.github.io/articles/ci_jenkins_hudson_continuous_integration_php_phing.html
恕我直言,我工作流程的真正秘诀是HOOKS,HOOKS,HOOKS! jenkins为我做的所有自动化都基于post commit / push hooks。当我提交CI并推送到远程服务器(github)时,jenkins通过post push hook(http://developer.github.com/v3/repos/hooks/#test-a-push-hook)收到警报。