This is simply going to be my documentation of how I have put up a Continuous integration flow with TeamCity, Rake, Albacore, GitHub and NUnit for a .Net project.
- Part 1 – Installing TeamCity and making it public accessible
- Part 2 – Prepare my solution – Rake & Albacore
- Part 3 – Integrate with GitHub & build the project
- Part 4 – Automation, reports, …, …
The environment for this article is a live environment, NOT a test on a Windows 7 machine, but I’m instead setting this up on a VPS with Windows Server 2008 R2 hosted at the excellent providers Tilaa. The TeamCity installation will be accessible via a public URL: http://ci.foo.com. To achieve this we will make use of IIS 7 Reverse proxying. Why? Felt simpler and I will probably make use of the site to provide reports etc. via e.g http://ci.fool.com/reports
Start by downloading the installation media from: http://www.jetbrains.com/teamcity/ This article will use v6.5.1 and the Proffesional edition. The installation is fairly simple and is documented using the following screenshots.
Make TeamCity public accessible
As of right now our TeamCity webserver is only accessible from the server where we installed it on. To make it public accessible, using the URL: http://ci.foo.com (we installed it on http://ci.foo.com:8080) we will use the IIS 7 Application Request Routing module but we will NOT setup a webfarm as other articles do; but instead setup a Reverse proxy on a normal IIS-site.
Install Application Request Routing module
I will install this module using Microsoft’s Web platform installer. Fire it up an locate the URL rewriting module (Products –> Server). Install it and let it include the modules it depends on.
NOTE! I have already installed the URL Rewriting module, hence it’s not selected as a dependency. It’s also worth noting that it’s not enough with the URL Rewriting module to setup a Reverse proxy.
That’s it for now. Part 2 will be written soon, and then we will look at using Rake and Albacore for building our Visual Studio solution and running our unit tests.