在开发服务器上测试/预览Github分支

Boz*_*Boz 8 git continuous-integration github

我刚从svn转到github.我和我的团队运行本地测试,我们在中央开发服务器上提交更改和测试.每当我们将更改推送到repos时,我想自动将更改到我的repos的任何分支到我的开发服务器上的文件夹中.这将使我和我的团队能够使用我们的中央开发服务器测试和预览彼此的代码.

理想情况下,我可以将子域映射到这些不同的分支目录.即如果该分支被称为"重构",我可以使用http://refactor.devserver.com进行检查

我想这可能涉及我的github配置中的一个钩子,它在dev服务器上触发了一个脚本?也许我需要使用像Hudson这样的ci服务器?

编辑:我可以轻松触发一个脚本来拉动主分支 - 我需要做的是将任何更改的分支拉到单独的根文件夹,这样我就可以通过它自己的子域轻松地测试任何分支.(或者以某种类似的方式自动部署和测试任何已更改的分支)

非常感谢.

Boz*_*Boz 12

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

我希望团队能够分叉代码并立即在这样的URL上显示它:http://branch-name.devserver.com

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

<VirtualHost *:80>
        ServerName www.devserver.com
        ServerAlias *.devserver.com
        VirtualDocumentRoot /var/www/devserver/%1/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

我在github或我的本地机器上分支代码.
然后在开发服务器上运行这些命令

cd /var/www/devserver
git clone git@github.com:/user-name/repos-name
Run Code Online (Sandbox Code Playgroud)

将克隆的repos文件夹移动到名为分支名称的文件夹,以使其成为子域虚拟主机的根文件夹.

mv repos-name new-branch
Run Code Online (Sandbox Code Playgroud)

然后将repos从master切换到新分支

cd /var/www/devserver/new-branch
git checkout new-branch
Run Code Online (Sandbox Code Playgroud)

它现在可以在http://new-branch.devserver.com上找到

然后在我将更改推送到github上的分支后 - 我将它们放在开发服务器上

cd /var/www/devserver/new-branch
git pull
Run Code Online (Sandbox Code Playgroud)

现在 - 如果我想让拉动自动发生,我可以设置一个CI服务器来监听一个git hub hook,它会触发每个分支文件夹的拉动.看起来Hudson可以做到这一点.


我希望找到一个更聪明的方法来做到这一点:

  1. 没有多次克隆回购
  2. 使用单个命令可以有效地更新所有分支,或者使用钩子,只允许我拉到已更新的分支
  3. 每个分支都有一个像样的文件夹结构 - 所以我可以测试特定网址上的任何分支,而不必每次分支代码时都要使用http配置
  4. 可能会自动为新分支创建根文件夹,以便它们可以神奇地出现在开发服务器上

欢迎进一步的想法...