Web Interface

I would like a web interface to run FB scripts and to see the status of currently running and completed scripts.

I’m currently working on a web interface for my build system. It works like this:

I created a MasterBuilder script in FB that can build any product by reading an INI file. The INI file tells it what files to pull out of source control, what version of those files to use (which branch, which changeset), what the expected output is, and where to copy that output to (ie, the release folder for that product).

I can get this MasterBuilder script to build different products (or different configurations of products) by feeding it different INI files.

I have created an SQL database will all the different configuration specifications. I am writing a stored procedure in the SQL that will export an INI file based on a selected configuration.

The MasterBuilder script will pick up that INI file, do the appropriate build(s), and save the results back into a Results table in the SQL database.

So my next step will be to write a web interface to that SQL database, from which I could add/edit a configuration, queue a configuration to be build, or see the results of previously queued configuration build.


Anyway, I hope that gives you some ideas of how to do what it is that you are trying to do.

I already have a set of scripts that do all of that. I do a mixture of Delphi and VS studio work, each script is unique. I have a common pattern (get from source control, compile, build installers, deploy to QA server, email interested parties), but the actual implementation varies depending on the compiler and installer used.

Right now I have a dedicated box for running FinalBuilder, with three teams doing their own builds. We are using Remote Desktop to connect to the build box to be able to start the build process, but it’s running on XP and that limits the remote login to one user at the time. 99% of the time, there are no contention issues, but every now and then we have to modify the scripts and that keeps other teams from starting their builds.

I wanted a web based means of running/monitoring jobs to eliminate the need to remote in just to run a build. AutomatedQA’s build tool has that, but I like FinalBuilder too much to switch for that one feature. I have seen messages on here from VSoft indicated that they are working on this, but that was over 6 months ago.

As an interim solution, I have created some batch files that use Sysinternals’s psexec command to remotely run fbcmd.exe in the context of the user account on the dedicated build box. That works pretty well, but I will want a way to monitor existing builds.

I may code a web site similiar to what you describe. When the web app started a build, it would create batch file that writes a “start” record in a SQL database, then runs fbcmd, then writes the “stop” record. The batch file would be started asynch, using the credentials of the build box account. I would then be able to at least show what build jobs were running, just without any sort of task progress indication. Of course, if I really want that, I could have the FB scripts write SQL records to indicate the status.

Hi Guys

We are still working on the web interface, I expect we will have a “technology preview” version in a few weeks. We still have some work to do to make it a releasable product however what we have at the moment is quite usable so we will make it available as a preview while we complete the feature work.



That sounds great Vincent. If you need a beta tester, I would love to try the new interface.

Posted By Vincent Parrett on 14 Jan 2007 5:42 PM
Hi Guys

We are still working on the web interface, I expect we will have a “technology preview” version in a few weeks. We still have some work to do to make it a releasable product however what we have at the moment is quite usable so we will make it available as a preview while we complete the feature work.





Currently I am in an advanced stage of setting up Anthill Pro 3 to work with FB on windows builds. This will give us much flexibility to have one web interface for java and windows builds.

Posted By Chris Miller on 12 Jan 2007 3:34 PM
I already have a set of scripts that do all of that. I do a mixture of Delphi and VS studio work, each script is unique. I have a common pattern (get from source control, compile, build installers, deploy to QA server, email interested parties), but the actual implementation varies depending on the compiler and installer used.
I do mine the same way - I have a common structure that uses variables to tell it what to do, then I iterate through my INI file calling this build structure with the variables I determine in the iteration process.
Posted By Chris Miller on 12 Jan 2007 3:34 PM
Right now Ihave a dedicated box for running FinalBuilder, with three teams doingtheir own builds. We are using Remote Desktop to connect to the buildbox to be able to start the build process, but it's running on XP andthat limits the remote login to one user at the time. 99% of the time,there are no contention issues, but every now and then we have tomodify the scripts and that keeps other teams from starting theirbuilds.
I have a similiar setup, one build box and lots of different scripts for different focuses. To solve the login problem, you could always use telent or cygwin or something like that. And about the scripts - I have all my scripts checked in to source control. On the builder box, there is a directory for "stable" build scripts that all official builds come from, then different users have their own folders for script development. When they are stable, they are marked as such in source control and then moved to the stable folder for the official builder to pick them up.
Posted By Chris Miller on 12 Jan 2007 3:34 PM
Asan interim solution, I have created some batch files that useSysinternals's psexec command to remotely run fbcmd.exe in the contextof the user account on the dedicated build box. That works prettywell, but I will want a way to monitor existing builds.
What I am doing to monitor the builds (until I have my SQL solution fully implemented) is to write a little mini-log as I go. Then I can open that to check on the progress, or I can use a tail/follow program to watch it. My structure goes something like this:
Iterate INI section
--Try
----Set Variable Step="Get Source"
----Get Source
----Set Variable Step="Build Product"
----Build Product
----Set Variable Step="Copy Output to Release"
----Copy Output to Release
----Write to log: Build Successful
--Catch
----Write to log: Build Failure during step: "%STEP%"
--End
Iterate next ...

This gives me not only a simplified pass/fail for each component, but gives me a clue as to where a component failed. It's much easier than digging through that 6MB HTML log file!
Posted By Chris Miller on 12 Jan 2007 3:34 PM
I maycode a web site similiar to what you describe. When the web appstarted a build, it would create batch file that writes a "start"record in a SQL database, then runs fbcmd, then writes the "stop"record. The batch file would be started asynch, using the credentialsof the build box account. I would then be able to at least show whatbuild jobs were running, just without any sort of task progressindication. Of course, if I really want that, I could have the FBscripts write SQL records to indicate the status.
This is how I have mine setup: I have a table called BuildConfig that has the configuration settings for the various builds I do. Then I have a table called BuildQueue that has many of the same columns and some additional columns. When I want to do a build, I copy a row from BuildConfig to BuildQueue. I can change the columns (for example, if I want to build output to a temporary location instead of going to the official release folder) and then set the status column to "Queued for Build". I have a process running on the builder that queries the BuildQueue table every 5 minutes looking for a row whose status is "Queued for Build", and if found it pick it up and builds it.

It’s even simpler than that. I’m using psexec and it’s handling all of the login credentials, there’s no session to deal with. I have a set of batch files that can be invoked by any developer from any machine. Concurrent job execution works just fine, just obviously slower.

Posted By Mike Ratzlaff on 15 Jan 2007 11:05 AM
To solve the login problem, you could always use telent or cygwin or something like that.