{"id":109,"date":"2009-12-23T15:12:22","date_gmt":"2009-12-23T15:12:22","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=109"},"modified":"2018-04-13T12:06:59","modified_gmt":"2018-04-13T16:06:59","slug":"do-you-ci-seeing-u-ciing-continuous-integration","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/do-you-ci-seeing-u-ciing-continuous-integration\/","title":{"rendered":"Do you CI seeing U CIing?  Continuous Integration"},"content":{"rendered":"<h3>Is your team using some form of\u00a0continuous\u00a0integration?<\/h3>\n<p>If not, why not?<\/p>\n<p>Continuous integration is one of the hallmarks of a good development process. \u00a0I&#8217;ve done continuous integration for many years now on every project I work on. \u00a0I am usually the one putting up the continuous integration server because I consider it a &#8220;must have.&#8221;<\/p>\n<p><strong>What is continuous\u00a0integration?<\/strong><\/p>\n<p>If you don&#8217;t know what continuous integration is, it is basically a build server that builds the software every time someone checks in a change. \u00a0If you are familiar\u00a0with the terms <em>nightly build<\/em>, or <em>weekly build<\/em>, continuous integration is <em>every check-in build<\/em>.<\/p>\n<p><strong>I have a nightly build, why do I need a continuous integration build?<\/strong><\/p>\n<p>I will start here and assume you understand the value of a nightly build. \u00a0The biggest issue and reason is one simple word:<\/p>\n<h1><span style=\"text-decoration: underline;\"><span style=\"color: #000000;\">FEEDBACK<\/span><\/span><\/h1>\n<p><span style=\"text-decoration: underline;\"><span style=\"color: #000000;\"><br \/>\n<\/span><\/span><\/p>\n<p>The tighter your feedback loop the more accurate your steering. \u00a0Imagine if turning your steering wheel in your car had a 2 second delay between the wheels actually turning. \u00a0Or when you looked out your rear view mirror, you actually saw the image that was there 2 seconds ago. \u00a0Would that affect your driving ability? \u00a0I certainly hope it would.<\/p>\n<p>The driving metaphor is the image of the nightly build in contrast to a continuous build. \u00a0When you are getting nightly information on whether or not your build broke, you are getting information too late. \u00a0By the time you course correct, you have lost valuable time and some of your developers may have steered right into a ditch. \u00a0As soon as someone has committed bad code, I want to know it, and I want them to know it. \u00a0Every second the build remains broken is time that other developers are unable to get the latest code and build the system or check that their changes did not break the build.<\/p>\n<p><strong>How do I get some of this continuous integration goodness?<\/strong><\/p>\n<p>There are many options out there, and most of them are pretty good actually.<\/p>\n<p>For the .NET world, Visual Studio Team Systems actually has a continuous integration server integrated now called <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms364045(VS.80).aspx\">Team Foundation Build<\/a>.<\/p>\n<p>There is the classic <a href=\"http:\/\/confluence.public.thoughtworks.org\/display\/CCNET\/Welcome+to+CruiseControl.NET\">Cruise Control .NET<\/a>, Java also, but kind of moldy <a href=\"http:\/\/sourceforge.net\/projects\/ccnet\/\">Cruise Control<\/a>.<\/p>\n<p>For Java or .NET I am liking <a href=\"http:\/\/hudson-ci.org\/\">Hudson<\/a> now, although it is probably better for Java.<\/p>\n<p>I have heard good things about <a href=\"http:\/\/luntbuild.javaforge.com\/\">Luntbuild<\/a>, and <a href=\"http:\/\/www.jetbrains.com\/teamcity\/index.html\">TeamCity<\/a>.<\/p>\n<p><strong>What makes a good continuous integration system?<\/strong><\/p>\n<p>In my next post I&#8217;ll cover how to set up your server from a perspective of what should you have and what things are important. \u00a0I&#8217;ll talk about unit test support, code coverage and all the other good things you should do with your CI server.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Is your team using some form of\u00a0continuous\u00a0integration? If not, why not? Continuous integration is one of the hallmarks of a good development process. \u00a0I&#8217;ve done continuous integration for many years now on every project I work on. \u00a0I am usually the one putting up the continuous integration server because I consider it a &#8220;must have.&#8221;&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[11287,163615,31679],"tags":[],"class_list":["post-109","post","type-post","status-publish","format-standard","hentry","category-agile","category-continuous-integration","category-process-improvement"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Do you CI seeing U CIing? Continuous Integration<\/title>\n<meta name=\"description\" content=\"An explanation of what continuous integration is and an explanation of the value added by comparing the feedback response time of a build to that of a car.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simpleprogrammer.com\/products\/careerguide\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Do you CI seeing U CIing? Continuous Integration\" \/>\n<meta property=\"og:description\" content=\"An explanation of what continuous integration is and an explanation of the value added by comparing the feedback response time of a build to that of a car.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/products\/careerguide\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2009-12-23T15:12:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-13T16:06:59+00:00\" \/>\n<meta name=\"author\" content=\"John Sonmez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John Sonmez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/do-you-ci-seeing-u-ciing-continuous-integration\\\/\"},\"author\":{\"name\":\"John Sonmez\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"headline\":\"Do you CI seeing U CIing? Continuous Integration\",\"datePublished\":\"2009-12-23T15:12:22+00:00\",\"dateModified\":\"2018-04-13T16:06:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/do-you-ci-seeing-u-ciing-continuous-integration\\\/\"},\"wordCount\":458,\"commentCount\":2,\"articleSection\":[\"Agile\",\"Continuous Integration\",\"Process Improvement\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/do-you-ci-seeing-u-ciing-continuous-integration\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\",\"name\":\"Do you CI seeing U CIing? Continuous Integration\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"datePublished\":\"2009-12-23T15:12:22+00:00\",\"dateModified\":\"2018-04-13T16:06:59+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"description\":\"An explanation of what continuous integration is and an explanation of the value added by comparing the feedback response time of a build to that of a car.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Do you CI seeing U CIing? Continuous Integration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/\",\"name\":\"Simple Programmer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/simpleprogrammer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\",\"name\":\"John Sonmez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"caption\":\"John Sonmez\"},\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/author\\\/jsonmez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Do you CI seeing U CIing? Continuous Integration","description":"An explanation of what continuous integration is and an explanation of the value added by comparing the feedback response time of a build to that of a car.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/simpleprogrammer.com\/products\/careerguide","og_locale":"en_US","og_type":"article","og_title":"Do you CI seeing U CIing? Continuous Integration","og_description":"An explanation of what continuous integration is and an explanation of the value added by comparing the feedback response time of a build to that of a car.","og_url":"https:\/\/simpleprogrammer.com\/products\/careerguide","og_site_name":"Simple Programmer","article_published_time":"2009-12-23T15:12:22+00:00","article_modified_time":"2018-04-13T16:06:59+00:00","author":"John Sonmez","twitter_card":"summary_large_image","twitter_misc":{"Written by":"John Sonmez","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/do-you-ci-seeing-u-ciing-continuous-integration\/"},"author":{"name":"John Sonmez","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"headline":"Do you CI seeing U CIing? Continuous Integration","datePublished":"2009-12-23T15:12:22+00:00","dateModified":"2018-04-13T16:06:59+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/do-you-ci-seeing-u-ciing-continuous-integration\/"},"wordCount":458,"commentCount":2,"articleSection":["Agile","Continuous Integration","Process Improvement"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/products\/careerguide#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/do-you-ci-seeing-u-ciing-continuous-integration\/","url":"https:\/\/simpleprogrammer.com\/products\/careerguide","name":"Do you CI seeing U CIing? Continuous Integration","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"datePublished":"2009-12-23T15:12:22+00:00","dateModified":"2018-04-13T16:06:59+00:00","author":{"@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"description":"An explanation of what continuous integration is and an explanation of the value added by comparing the feedback response time of a build to that of a car.","breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/products\/careerguide"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"Do you CI seeing U CIing? Continuous Integration"}]},{"@type":"WebSite","@id":"https:\/\/simpleprogrammer.com\/#website","url":"https:\/\/simpleprogrammer.com\/","name":"Simple Programmer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simpleprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67","name":"John Sonmez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","caption":"John Sonmez"},"url":"https:\/\/simpleprogrammer.com\/author\/jsonmez\/"}]}},"_links":{"self":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/comments?post=109"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/109\/revisions"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}