2011-07-23 46 views
7

我刚刚从svn移动到github。我和我的团队运行本地测试,并在中央开发服务器上进行更改和测试。无论何时我们将更改推送到回购站,我都想自动将更改分配到我的回购站的任何分支到我的开发服务器上的文件夹中。这将使我和我的团队能够使用我们的中央开发服务器来测试和预览其他代码。测试/预览开发服务器上的Github分支

理想情况下,我可以将子域映射到这些不同的分支目录。 也就是说如果分支被称为“重构”,我可能会检查它使用 http://refactor.devserver.com

我想这可能涉及在我的github配置钩子在触发dev服务器上的脚本?也许我需要使用像哈德森这样的ci服务器?

编辑:我可以很容易地触发一个脚本来拉主分支 - 我需要做的是将任何改变的分支拉到单独的根文件夹,所以我能够通过它自己的子域容易地测试任何分支。 (或者一些类似的方式来自动部署和测试任何改变的分支)

非常感谢。

回答

10

这里的答案是我自己的问题的一部分...

我希望球队能够叉代码,瞬间就能证明它在这样一个网址:http://branch-name.devserver.com

我在apache conf中设置了vhost指令来将子域映射到文件夹:

<VirtualHost *:80> 
     ServerName www.devserver.com 
     ServerAlias *.devserver.com 
     VirtualDocumentRoot /var/www/devserver/%1/ 
</VirtualHost> 

我在github或本地机器上分支代码。
然后开发服务器继续前行

cd /var/www/devserver 
git clone [email protected]:/user-name/repos-name 

,使其成为子域名虚拟主机的根文件夹中运行这些命令克隆回购文件夹命名分支名称的文件夹。

mv repos-name new-branch 

然后回购切换由主到新的分支

cd /var/www/devserver/new-branch 
git checkout new-branch 

它是现在市面上http://new-branch.devserver.com

然后我推开更改分支在GitHub后 - 我拉不上开发服务器

cd /var/www/devserver/new-branch 
git pull 

现在 - 如果我想拉的发生au我可以设置一个CI服务器来侦听一个git集线器钩子,这会触发每个分支文件夹中的一个pull。看起来哈德森可以做到这一点。


我倒是希望能找到一个更聪明的方式做到这一点:

  1. 没有克隆回购多次
  2. 用一个命令来更新有效各分公司或钩,让我拉到只有更新的分支
  3. 有一个体面的文件夹结构为每个分支 - 所以我可以测试任何分支在一个特定的网址,而不必与每一次我分支代码混乱http配置
  4. 可能会自动创建新分支的根文件夹,使他们奇迹般地出现在开发服务器

任何进一步的想法欢迎在...

+0

你可以直接将存储库克隆到一个新的文件夹,所以你不需要''mv''。 http://stackoverflow.com/questions/651038/how-do-you-clone-a-git-repository-into-a-specific-folder – Lg102

1

如果您定义了一些自动部署过程,那肯定可以使用Hudson完成。实际上,我在一年前做了类似的设置 - 如果更改推入Hudson主进行的单元测试,并且成功部署到分段。

+0

我需要部署和自动测试任何更改的分支。我想到的一种可能的解决方案是将所有更改的分支拉到单独的根文件夹中,这样我就可以通过它自己的子域轻松地测试任何分支。有任何想法吗? – Boz

+0

只需在哈德逊为每个分支定义一项单独的工作。或者你的意思是说你也希望Hudson自动检测新的分支?在这种情况下,它可能会更棘手。 –

+0

嗨obrok - 我已经回答了我自己的问题,请检查我的答案和评论,如果你可以帮助进一步重新。 CI和自动化 - 非常感谢。 – Boz