VSoft Technologies BlogsVSoft Technologies Blogs - posts about our products and software development.https://www.finalbuilder.com/resources/blogsThe future of FinalBuilder Server is Continua CIhttps://www.finalbuilder.com/resources/blogs/postid/694/the-future-of-finalbuilder-server-is-continua-ciContinua CI,FinalBuilder ServerMon, 11 Mar 2013 07:36:02 GMT<p>It's been a long time coming, but the release of Continua CI, our next generation Continuous Integration server product is almost here. Continua CI will replace FinalBuilder Server (FBS), in other words, FBS 7 is the last Major release of FinalBuilder Server. Of course we will continue to support FinalBuilder Server 7 for some time, but no new features will be added to it.</p> <p>Licensing wise, customers with current Software Assurance (on FinalBuilder Server User licenses) will automatically receive Continua CI licenses when it is released (using 2 User licenses = 1 Concurrent Build License). I detailed how Continua CI licensing will work in <a href="/resources/blogs/introducing-continua-ci-beta">this blog post.</a></p> <p>It's fair to say that FinalBuilder Server has some major limitations, the main one being scalability. The architecture of FBS is such that moving it forward to provide better performance and scability would be next to impossible, so we decided to start from scratch, taking into account what customers were asking for, where the industry were heading, and looking for better ways to aproach continuous integration in general.</p> <p>Continua CI is written using C#, .NET 4, ASP.NET MVC4 + extensive use of jQuery. It uses a database engine (PostgreSQL or SQL Server 2008+) unlike FBS which uses .net serialization (which has been problematic).</p> <p style="text-align: center;"> </p> <style type="text/css">.featureTable { border: 1px solid #0071c5; border-collapse: collapse; width:100%; margin-left: auto; margin-right: auto; } .featureTable thead { background-color : #0071c5; color : White; } .featureTable td { border: 1px solid #0071c5; padding : 5px; } </style> <table align="center" cellpadding="0" cellspacing="0" class="featureTable"> <thead> <tr> <td style="width: 20px;">Feature</td> <td style="width: 40%;">FinalBuilder Server</td> <td style="width: 40%;">Continua CI</td> </tr> </thead> <tbody> <tr> <td>Build Runners</td> <td>FinalBuilder Only</td> <td>FinalBuilder, Ant, Nant, MSBuild, Visual Studio (more will be added)</td> </tr> <tr> <td>Version Control Systems</td> <td>Accurev, Alien Brain, Bazaar, Starteam, CVS, File System, Git, Mercurial, Perforce, PlasticSCM, Subversion, SurroundSCM, Vault, SourceSafe, TFS</td> <td>Bazaar, FileSystem, Git*, Mercurial*, Perforce, Subversion*, SurroundSCM, TFS, Vault (Others will be added based on demand.. except sourcesafe... let it die people!)</td> </tr> <tr> <td>VCS Branch Support*</td> <td>Single Branch</td> <td>*All Branches, Single Branch or *By Pattern (depends on VCS type)</td> </tr> <tr> <td>VCS Checkout/Get</td> <td>Optional, can be handled by FB script.</td> <td>Clean checkout into clean workspace for each build. Source is cached on Server and agents.</td> </tr> <tr> <td>Issue Tracker support</td> <td>None</td> <td>FogBugz, Bugzilla,Jira, Youtrack, custom.</td> </tr> <tr> <td>Stages, Conditions</td> <td>Single FinalBuilder Script</td> <td>Unlimited Stages, unlimited build runners.</td> </tr> <tr> <td>Concurrent Builds</td> <td>Only of different projects, builds of projects currently running are queued.</td> <td>Concurrency based on license and agent(s) configuration.</td> </tr> <tr> <td>Scalability</td> <td>Single Server, requires full server install on other machines when single server is loaded too heavily.</td> <td>Central Server, 1 or more agents installed on as many machines as you like.</td> </tr> <tr> <td>Licensing</td> <td>Per User licensing.</td> <td>Per Concurrent Build - Free install includes 1 Concurrent build, 1 local agent, unlimited users. At least 1 concurrent build license is needed to allow remote agents.</td> </tr> <tr> <td>Security Model</td> <td>Simple Users & Roles.</td> <td>Users, Groups, Roles, Permissions, Access Control Lists (global, project and configuration levels)</td> </tr> <tr> <td>Authentication</td> <td>Limited Active Directory support, Forms Authentication only.</td> <td>Forms only, Mixed or Windows only Authentication</td> </tr> <tr> <td>Platforms</td> <td>Windows Only.</td> <td>Windows Only - other Platforms in the future.</td> </tr> <tr> <td colspan="3">(*) - Branch monitoring only available on Git, Mercurial and Subversion.</td> </tr> </tbody> </table> <p> </p> <h3>Migrating to Continua CI</h3> <h4>Key Differences</h4> <p>Whilst both Continua and FinalBuilder Server (FBS) are both Continuous Integration Servers, they are quite different in how they operate. Continua CI's design is based on feedback from FinalBuilder Server customers, and with a view to making it appeal to more users (FBS is only of use to FinalBuilder Users). The differences in concepts between the two products make it difficult to create an comprehensive automated migration from FBS to Continua. There is a conversion tool that provides a "leg up" in the conversion, but some manual intervention will be needed (more on that in a future post).</p> <h4>Working with FinalBuilder Projects</h4> <p>Perhaps the biggest difference for FBS users is where the FinalBuilder Project Files live. In FBS, the FinalBuilder project files (.fbp7/.fbz7) are managed by FBS and each FBS project references a single FB projects. In Continua, your FinalBuilder Project files must be in a version control Repository that is referenced by your Configuration. Continua is not tied to FinalBuilder in any way, FinalBuilder is just one of a number of different Build Runner Actions available.</p> <h4>Where and when the Build runs</h4> <p>FinalBuilder Server projects all run on the same machine, the one where FBS is installed. This unfortunately limits how many builds can be run concurrently. FBS also doesn't allow multiple builds of the same project to run concurrently, so for example a CI build triggered by a checkin, and a manually started build for the same project cannot run at the same time. The main reason for this is that the working folder and source code are managed by the FinalBuilder project.</p> <p>Continua CI uses Build Agents to run the builds. Agents can be installed on the same machine as Continua Server, or on other machines. Each agent can run multiple concurrent builds (limited only by hardware resources and software licenses), and each build get's its own working folder and copy of the source code (which is managed by Continua). When a build is queued in Continua, it's requirements (compilers & other tools needed) are evaluated against the available Agents capabilities, and a suitable agent is selected. The build will run when a suitable agent is available to run the build. This may be immediately or at a later time. If no suitable agent is available, then the build will stay on the queue until one becomes available or the build is cancelled by a user.</p> <h4>Continua CI and FinalBuilder</h4> <p>Continua includes a FinalBuilder Action which will run any FinalBuilder Project which is available in the build's workspace. To get the FinalBuilder project into the build workspace, it needs to be in a Repository which is associated with the Configuration. Note that this action only supports FinalBuilder 7.0.0.1795 or later, if you are using older versions of FinalBuilder, you can still use them with the Execute Program Action. FinalBuilder needs to be installed on each Agent machine (the agent will detect that it is installed, and report that to the server).</p> <h4>FinalBuilder Project Variables</h4> <p>Since Continua lacks the tight integration with FinalBuilder that FBS has, it has no knowledge of the internals of the FinalBuilder Project and that includes Project Variables. The FinalBuilder Action in Continua allows you to set the values of those project variables from the action, but you will need to know what those project variables are. Continua is unable to inspect the FinalBuilder Project to determine the varianbles needed as it has no access to the FinalBuilder Project file at design time. We are currently looking at ways to make this easier.</p> <h4>Continua CI and the future</h4> <p>Of course, what will be released soon is only the start of what we have planned for Continua CI. We are planning an aggressive release cycle, with frequent updates. We have a long list of features we plan to implement. Continua CI is built on a modular platform, and we will be releasing other modules over time.</p> <h4>Documentation</h4> <p><a href="http://wiki.finalbuilder.com/display/continua/Continua+CI">Documentation site</a><br /> <a href="http://wiki.finalbuilder.com/display/continua/Concepts">Continua CI Concepts</a><br /> <a href="http://wiki.finalbuilder.com/pages/viewpage.action?pageId=655774">Migrating from FinalBuilder Server</a><br /> <a href="http://wiki.finalbuilder.com/display/continua/Setting+up+a+real+world+project">Setting up a real world project</a></p> <p> </p> <h4><a>Take Continua CI for a spin</a></h4> <p><a> </a></p> <p><a>The beta download links are pinned at the top of the </a>Continua CI General Discussion forum</p> <h4>What if I find a bug?</h4> <p>Please post as much information as you can about your environment, the build of Continua CI you are using and the bug in the Continua CI Bug Reports forum.</p> 694DUnit and FinalBuilder/FinalBuilder Server - better integration.https://www.finalbuilder.com/resources/blogs/postid/414/dunit-and-finalbuilderfinalbuilder-server-betteFinalBuilder,FinalBuilder ServerSun, 14 Nov 2010 03:00:00 GMT<p>FinalBuilder has had an NUnit action for some time now, but for DUnit we have always advocated just compiling the unit test executable as a console app using the TextTestRunner, and using the Execute Program action. This has worked fine, however it doesn't provide the same sort of integration into FinalBuilder Server as the NUnit action provides.</p> <p>FinalBuilder 7.0.0.848 or later includes a new DUnit action. This action is designed to run DUnit test applications that are written as console apps, and use the FinalBuilder.XMLTestRunner.pas file to run the unit tests. This unit produces and xml report file in the same format as NUnit, which means that FinalBuilder already knows how to parse it. Also included in the FinalBuilder\DUnit folder is an XSL stylesheet and a CSS file to transform the xml report file to html (which can be done using the TransformXML action. The FinalBuilder.XMLTestRunner is a combination of the xml test runner and the text test runner. It still writes out to the console (which the action sends to the FinalBuilder log) and it also writes the xml report file.</p> <p>When the DUnit action is used under FinaBuilder Server 7.x - the DUnit results are shown on the Status page :</p> <p style="text-align: center;"><img alt="" src="/blogimages/DUnitSummary.png" /></p> <p>and in a separate tab on the Build Log page :</p> <p style="text-align: center;"><img alt="" src="/blogimages/DUnitPass.png" width="600" /></p> <p style="text-align: center;"><img alt="" src="/blogimages/DUnitFailure.png" width="600" /></p> <p>The Passes and Failures can be inspected by clicking on the green or red buttons.</p> <p>The FinalBuilder\DUnit folder also includes a simple example test application which shows how to structure your test executable to use the FinalBuilder.XMLTestRunner.</p> <p>FinalBuilder 7.0.0.848 is available - disclaimer - please note it is a Test build, which means it's a build which contains bug fixes and or new features since the last official update, but has not had the same testing applied to it as an official update build would.</p> 414Broken the Build? Time to get your just dessertshttps://www.finalbuilder.com/resources/blogs/postid/686/broken-the-build-time-to-get-your-just-dessertsFinalBuilder ServerThu, 08 Jan 2009 03:00:00 GMT<p>Suma, a frustrated stackoverflow member, recently asked "<a href="http://stackoverflow.com/questions/211426/what-punishment-do-you-have-when-someone-on-the-team-breaks-the-build">what other teams do when someone breaks the build?</a>"<br /> <br /> The answers, including photo evidence, were definitely some of the more humourous I've seen on stackoverflow.<br /> <br /> I think I prefer Jeff Atwood's penance of doughnuts over physical foam assault and humiliation, but that's just because of my sweet tooth and not my kindheartedness. <img alt="" src="/Providers/HtmlEditorProviders/Fck/FCKeditor/editor/images/smiley/msn/wink_smile.gif" /></p> <div style="text-align: center;"><img alt="Penance of doughnuts - Jeff Atwood" height="289" src="/blogimages/penance-of-doughnuts.jpg" width="500" /></div> <p style="text-align: right;"> Image source: <a href="http://stackoverflow.com/questions/211426/what-punishment-do-you-have-when-someone-on-the-team-breaks-the-build">Jeff Atwood on stackoverflow.com</a></p> <p style="text-align: left;">If you fear being the target of a Nerf assault, perhaps FinalBuilder Server can help with its <a href="/finalbuilder-server/finalbuilder-server-feature-tour/build-responsibility">Build Responsibility</a> flag. By taking responsibility for fixing the build you can mitigate the wrath of angry team members.</p> 686Big day today...https://www.finalbuilder.com/resources/blogs/postid/599/big-day-todayAutomise,FinalBuilder ServerMon, 21 May 2007 04:00:00 GMT<p>A day of releases today.  FinalBuilder 5.5 is released today, and so is our newest product, FinalBuilder Server!<br /> <br /> FinalBuilder 5.5 adds plenty of minor enhancements (including support for CodeGear Delphi 2007), bug fixes, etc, but the main thing is that the Professional version now gets a license of FinalBuilder Server thrown in!  That's how we're justifying the jump from 5.0 to 5.5 :)  We've already received a ton of very positive feedback on FinalBuilder Server, and I must say that it is quite nice to use.<br /> <br /> In a nutshell, FinalBuilder Server is a web interface for centralizing and managing your builds.  It relies on the FinalBuilder FBCMD.exe underneath as the build engine, but there are significant differences especially as far as logging is concerned.  There is now a separate logging server, and FBCMD redirects all the logging to that server.  This means that you can run more than one instance of the same project at the same time - plus of course FB Server needs access to the logs during and after the builds so that it can display the log output, statistics, build history etc.<br /> <br /> FinalBuilder Server has been almost a year in development, and we've had quite a long beta period for it too.  We have really been concentrating on ease-of-use and quality.  Many features were put on the todo list instead of implemented straight away because the number one goal was to build a very solid base to work on.  It's been running the FinalBuilder, FinalBuilder Server, and Automise builds for almost 5 months now, and we've had a fair number of customers use it during the beta - so, finally, today is the day for it's first release :)<br /> <br /> More information on FinalBuilder Server here: <a href="/finalbuilder-server" target="_blank">https://www.finalbuilder.com/finalbuilder-server</a><br /> <br /> Also - I forgot to blog about it before, but Automise 2 was released a couple of weeks ago.  We added over 140 actions - there's some seriously cool stuff in there :)  </p> 599