{"id":629,"date":"2009-01-08T14:50:42","date_gmt":"2009-01-08T13:50:42","guid":{"rendered":"http:\/\/www.navision-blog.de\/2009\/01\/08\/how-i-do-continuous-integration-with-my-c-sharp-or-f-sharp-projects-part-ii-continuous-integration-server\/"},"modified":"2009-01-08T19:15:44","modified_gmt":"2009-01-08T18:15:44","slug":"how-i-do-continuous-integration-part-ii-continuous-integration-server","status":"publish","type":"post","link":"http:\/\/www.navision-blog.de\/blog\/2009\/01\/08\/how-i-do-continuous-integration-part-ii-continuous-integration-server\/","title":{"rendered":"How I do Continuous Integration with my C# \/ F# projects &#8211; part II: Setting up a Continuous Integration Server"},"content":{"rendered":"<p>In the <a href=\"http:\/\/www.navision-blog.de\/2009\/01\/08\/how-i-do-continuous-integration-part-i-setting-up-source-control\/\">last post<\/a> I showed how easy it is to install Subversion and how it can be integrated into Visual Studio 2008 via AnkhSVN. This time we will set up a Continuous Integration server and configure a build runner.<\/p>\n<p>As a Continuous Integration Server I recommend JetBrains TeamCity. You can download the free professional edition at <a title=\"http:\/\/www.jetbrains.com\/teamcity\/\" href=\"http:\/\/www.jetbrains.com\/teamcity\/\">http:\/\/www.jetbrains.com\/teamcity\/<\/a>.<\/p>\n<h5>Installing TeamCity<\/h5>\n<p>During the installation process TeamCity wants to get a port number. Be sure that there will be no conflict with other web applications on your server. I chose port 8085 \u2013 and my first build agent got this default settings:<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Configure a Build Agent\" style=\"display: inline\" height=\"371\" alt=\"Configure a Build Agent\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image.png\" width=\"500\" \/> <\/p>\n<p>In the next step you have to sign the License Agreement and to create an administrator account:<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Set up administrator account\" style=\"display: inline\" height=\"204\" alt=\"Set up administrator account\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_3.png\" width=\"350\" \/> <\/p>\n<h5>Creating a Project<\/h5>\n<p>Now you can create your project and set up the build configuration:<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Create project on your TeamCity Server\" style=\"display: inline\" height=\"350\" alt=\"Create project on your TeamCity Server\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_4.png\" width=\"500\" \/> <\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Create CITest project \" style=\"display: inline\" height=\"208\" alt=\"Create CITest project \" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_5.png\" width=\"500\" \/> <\/p>\n<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Create Build Configuration\" height=\"467\" alt=\"Create Build Configuration\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_6.png\" width=\"500\" border=\"0\" \/> <\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Set up version control root\" style=\"display: inline; margin-left: 0px; margin-right: 0px\" height=\"381\" alt=\"Set up version control root\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_7.png\" width=\"500\" \/> <\/p>\n<h5>Setting up a build runner<\/h5>\n<p>For setting up specific build runners see the <a href=\"http:\/\/www.jetbrains.com\/teamcity\/documentation\/index.html\">TeamCity documentation<\/a>. For now I will use the \u201csln2008\u201d-Build runner (the Runner for Microsoft Visual Studio 2008 solution files).<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Runner for Microsoft Visual Studio 2008 solution files\" style=\"display: inline\" height=\"260\" alt=\"Runner for Microsoft Visual Studio 2008 solution files\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_8.png\" width=\"500\" \/> <\/p>\n<p>Now add a build trigger. Whenever someone performs a Commit on the Subversion repository the server has to start a build.<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Build trigger\" style=\"display: inline\" height=\"190\" alt=\"Build trigger\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_9.png\" width=\"500\" \/><\/p>\n<h5>Testing the build runner<\/h5>\n<p>After this step we have two options to start a build. The first one is by clicking the \u201cRun\u201d-button on the project website and the second is doing a checkin:<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Triggering the build running with a checkin\" style=\"display: inline\" height=\"392\" alt=\"Triggering the build running with a checkin\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_10.png\" width=\"500\" \/> <\/p>\n<p>After performing the Commit the pending build appears on the project website:<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"Pending build\" style=\"display: inline\" height=\"246\" alt=\"Pending build\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_11.png\" width=\"500\" \/>&#160; <\/p>\n<p>After 60 seconds (see my configuration above) the build is starting. After the build is complete one can see the results in different ways. The simplest is via the project website:<\/p>\n<p><img loading=\"lazy\" class=\"bordered\" title=\"View build results\" style=\"display: inline\" height=\"229\" alt=\"View build results\" src=\"http:\/\/www.navision-blog.de\/images\/HowIdoContinuousIntegrationwithmyCFproje_AD6B\/image_12.png\" width=\"500\" \/> <\/p>\n<\/p>\n<p>Of cause TeamCity gives you a lot of different notification and monitoring possibilities including mail, RSS feeds or System Tray Notifications.<\/p>\n<p><a href=\"http:\/\/www.navision-blog.de\/2009\/01\/08\/how-i-do-continuous-integration-part-3-running-automated-unittests\/\">Next time<\/a> I will show how we can integrate UnitTesting in our automated build scenario.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the last post I showed how easy it is to install Subversion and how it can be integrated into Visual Studio 2008 via AnkhSVN. This time we will set up a Continuous Integration server and configure a build runner. As a Continuous Integration Server I recommend JetBrains TeamCity. You can download the free professional [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[12,23,448,29,3],"tags":[492,664,498,190,499,174],"_links":{"self":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/629"}],"collection":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/comments?post=629"}],"version-history":[{"count":5,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/629\/revisions"}],"predecessor-version":[{"id":638,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/posts\/629\/revisions\/638"}],"wp:attachment":[{"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/media?parent=629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/categories?post=629"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.navision-blog.de\/blog\/wp-json\/wp\/v2\/tags?post=629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}