【问题标题】:php remote development workflow: git, symfony & hudsonphp远程开发工作流程:git、symfony & hudson
【发布时间】:2023-03-28 12:30:01
【问题描述】:

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

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

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

这是我的初步想法:

public_html(实时站点和 git repo)
测试:用于视觉测试的站点镜像(完整的 git 存储库)
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

快照:

每个主要部署冲刺都应该有一个标准名称并进行跟踪。 方法:git标签 命名约定:待定

将网站恢复到以前的状态

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

我的问题:

1-此工作流程是否有意义,如果没有,任何建议 2-我的还原方法是正确的还是有更好的方法来表示“还原到 x 提交之前”

感谢您花时间阅读这篇很长的帖子:)

【问题讨论】:

    标签: php git symfony1 hudson


    【解决方案1】:

    我只打算解决问题 1 到 3(并简要介绍 5)。首先,我认为您不应该将规范存储库托管在生产服务器上。

    由于您不想在本地设置它,我建议您在 public_html 以外的服务器上的某个位置创建存储库,将其推送到 GitHub(或您选择的 Git 托管),然后 git clone 它public_html等

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

    回顾一下:

    public_html - master 分支已签出 - 只需执行 git pull 即可更新 staging - 暂存分支已签出 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。

    【讨论】:

    • 感谢卢克,这是很棒的东西。只是想澄清为什么在生产服务器上托管我的仓库是个坏主意?
    • 您应该始终对您的代码进行异地备份,尤其是因为您没有它的本地副本。如果您的服务器崩溃,或者您的帐户被删除等等,您将丢失您的代码库。另外,它位于 GitHub 上,您可以从任何地方访问它
    猜你喜欢
    • 2011-09-23
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多