php远程开发工作流程:git,symfony&哈德森

时间:2010-09-19 04:38:48

标签: php git symfony1 hudson

编辑:(在看到卢克的回答之后)

我正在寻找开发网站,所有工作都将远程完成(没有本地开发服务器)。这样做的原因是我的共享托管公司a2hosting有一个特定的配置(symfony,mysql,git),当我可以通过ssh和远程开发或通过netbeans远程编辑功能时,我不想花时间复制。

我的问题是如何使用git将我的网站分成三个区域:live,staging和dev。

这是我的初步想法:

public_html(live site and git repo)
测试:用于视觉测试的网站镜像(完整的git repo)
dev / ticket#:用于功能和错误修复的public_html的git分支(完整的git repo)

使用git进行版本控制:

初始设置:

cd public_html  
git init  
git add *  
git commit -m ‘initial commit of the site’  
cd ..  
git clone public_html testing  
mkdir dev

开发:

cd /dev
git clone ../testing ticket#
all work is done in ./dev/ticket#, 
then visit www.domain.com/dev/ticket# to visually test
make granular commits as necessary until dev is done
git push origin master:ticket#  
if the above fails:
    merge latest testing state into current dev work: git merge origin/master
    then try the push again
mark ticket# as ready for integration

集成和部署过程:

cd ../../testing
git merge ticket#  -m "integration test for ticket# --no-ff (check for conflicts )
run hudson tests

visit www.domain.com/testing for visual test  

if all tests pass:  
    if this ticket marks the end of a big dev sprint:  
        make a snapshot with git tag  
        git push --tags origin  
    else  
        git push origin
        cd ../public_html
        git checkout -f  (live site should have the latest dev from ticket#)
else:
    revert the merge: git checkout master~1; git commit -m "reverting ticket#"
    update ticket# that testing failed with the failure details

快照:

每个主要部署sprint都应具有标准名称并进行跟踪。 方法:git标签 命名惯例:TBD

将网站恢复到以前的状态

如果出现问题,请恢复到之前的快照 并使用新票证调试dev中的问题#。修复错误后,请关注 再次部署过程。

我的问题:

1 - 如果没有任何建议,此工作流程是否有意义 2 - 我的恢复方法是正确还是有更好的方式来说'恢复到x提交之前'

感谢您花时间阅读这篇非常长篇文章:)

1 个答案:

答案 0 :(得分:2)

我只会解决问题1 - 3(简称5)。首先,我认为您不应该在生产服务器上托管您的规范存储库。

由于你不想在本地设置它,我建议你在服务器上的某个地方创建存储库而不是public_html,将它推送到GitHub(或你选择的Git主机),然后git克隆它public_html等。

此外,我会使用master作为生产分支,为开发创建功能分支,然后将它们合并到分段中进行测试,然后在分段测试后推送到master。

回顾一下:

public_html - 签出了master分支 - 只需执行git pull即可更新 staging - staging branch签出 dev - 您正在处理的任何功能分支等

这只是一个git分支策略,但它是我的团队成功使用的策略。

对于3,您需要设置Hudson,以便自动提取分段的最新更改。请参阅What's the workflow of Continuous Integration With Hudson?或查看右侧边栏以了解如何使其正常工作。 CI的要点是它需要自动化,否则它不是CI:)

最后,限制访问网站的一种简单方法是使用.htacess文件(假设您的主机使用Apache,他们似乎)。请参阅http://httpd.apache.org/docs/2.2/howto/htaccess.html或Google .htaccess。