I've just moved from svn to github. Me and my team run local tests and we commit changes and test on a central dev server. Whenever we push changes to the repos I would like to automatically pull changes to any branches of my repos into folders on my dev server. This would enable me and my team to test and preview each others code using our central dev server.
Ideally, I could then map subdomains onto these different branch directories. I.e. If the branch was called 'refactor' i might check it using http://refactor.devserver.com
I guess this might involve a hook in my github configuration that triggers a script on the dev server? Perhaps i need to use a ci server like Hudson?
Edit : I can easily trigger a script to pull the master branch - what I need to do is pull any changed branches to separate root folders, so I'm able to test any branch easily through it's own subdomain. (Or some similar way to deploy and test any changed branches automatically)
Many thanks.
Here is part of the answer to my own question...
I wanted the team to be able to fork the code and instantly be able to show it on a url like this : http://branch-name.devserver.com
I set up vhost directives in apache conf to map sub domains to folders :
<VirtualHost *:80>
ServerName www.devserver.com
ServerAlias *.devserver.com
VirtualDocumentRoot /var/www/devserver/%1/
</VirtualHost>
I branch the code in github or on my local machine.
Then run these commands on the dev server
cd /var/www/devserver
git clone [email protected]:/user-name/repos-name
Move the cloned repos folder to a folder named the branch name so it becomes the root folder of the subdomain virtual host.
mv repos-name new-branch
Then switch the repos from master to the new branch
cd /var/www/devserver/new-branch
git checkout new-branch
It's now available on http://new-branch.devserver.com
Then after I've pushed changes to the branch on github - I pull them on the dev server
cd /var/www/devserver/new-branch
git pull
Now - if I want the pull to happen automatically I could setup a CI server to listen for a git hub hook which would trigger a pull in each branches folder. Looks like Hudson could do this.
I'd hoped to find a smarter way to do this :
Any further thoughts welcome...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With