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.
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 this blog post.
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.
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).
||FinalBuilder, Ant, Nant, MSBuild, Visual Studio (more will be added)
|Version Control Systems
||Accurev, Alien Brain, Bazaar, Starteam, CVS, File System, Git, Mercurial, Perforce, PlasticSCM, Subversion, SurroundSCM, Vault, SourceSafe, TFS
||Bazaar, FileSystem, Git*, Mercurial*, Perforce, Subversion*, SurroundSCM, TFS, Vault (Others will be added based on demand.. except sourcesafe... let it die people!)
|VCS Branch Support*
||*All Branches, Single Branch or *By Pattern (depends on VCS type)
||Optional, can be handled by FB script.
||Clean checkout into clean workspace for each build. Source is cached on Server and agents.
|Issue Tracker support
||FogBugz, Bugzilla,Jira, Youtrack, custom.
||Single FinalBuilder Script
||Unlimited Stages, unlimited build runners.
||Only of different projects, builds of projects currently running are queued.
||Concurrency based on license and agent(s) configuration.
||Single Server, requires full server install on other machines when single server is loaded too heavily.
||Central Server, 1 or more agents installed on as many machines as you like.
||Per User licensing.
||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.
||Simple Users & Roles.
||Users, Groups, Roles, Permissions, Access Control Lists (global, project and configuration levels)
||Limited Active Directory support, Forms Authentication only.
||Forms only, Mixed or Windows only Authentication
||Windows Only - other Platforms in the future.
|(*) - Branch monitoring only available on Git, Mercurial and Subversion.
Migrating to Continua CI
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).
Working with FinalBuilder Projects
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.
Where and when the Build runs
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.
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.
Continua CI and FinalBuilder
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 18.104.22.1685 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).
FinalBuilder Project Variables
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.
Continua CI and the future
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.
Continua CI Concepts
Migrating from FinalBuilder Server
Setting up a real world project
The beta download links are pinned at the top of the Continua CI General Discussion forum
What if I find a bug?
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.