Login | Register
My pages Projects Community openCollabNet

Project home

2020-03-13: This site is going to be decommissioned and shut down very soon. Please copy and archive any data you wish to keep ASAP

If you were registered and logged in, you could join this project.

Summary Continuous Automated Build and Integration Environment
Categories scm, construction
License GNU General Public License
Owner(s) getsw

Message from the owner(s)

Written in PERL, CABIE has been in production use for seven years producing/testing commercial software releases and patches. With enhancements made on a regular basis to support a production/test environment I have very little time to create an installer, or a demo system. This system is unique, flexible and extremely robust, it can be deployed in an hour, but I could really use help to produce an installer and some documentation. If you have the time or feel it's worth persuing please let me know!

Continuous Automated Build and Integration Environment. Cabie is a multi-platform, multi-cm client/server based application providing both command line and web-based access to real time build monitoring and execution information. Cabie builds jobs based upon configuration information stored in MySQL and will support virtually any build that can be called from the command line. Cabie provides a centralized collection point for all builds providing web based dynamic access, the collector is SQL based and provides information for all projects under Cabie's control. Cabie can be integrated with bug tracking systems and test systems with some effort depending on the complexity of those systems. With the idea in mind that most companies create build systems from the ground up, Cabie was designed to not have to re-write scripted builds but instead to integrate existing build scripts into a smart collector. Cabie provides rapid email notification and RSS integration to quickly handle build issues. Cabie provides the ability to run builds in parallel, series, to poll jobs or to allow the use of scripted nightly builds. Cabie is perfect for agile development in an environment that requires multiple languages and tools. Cabie supports Perforce, Subversion and CVS. The use of a backend broker allows anyone with perl skills to write support for additional CM systems.


The mission for CABIE is to centralize projects within a large company built by different development groups, utilizing unlike toolsets, languages and cm tools. The centralization happens by deploying CABIE within each group, CABIE handling all build jobs, and centralizing all data collection in a single location using a database backend.


  • Written in EXTREMELY EASY TO READ PERL by someone who's been doing CM for 12 years
  • Command line interface to support scripting
  • Daemon/Windows Service support (Runs on Unix, Linux, Solaris, Windows)
  • Web interface
  • Rapid email build notification
  • MySQL support for configuration and centralized job data collection
  • Watchdog notification system for late jobs or insufficient resources
  • Pre/Post/PostPost/Fail triggers
  • Email Subscription Mechanism
  • Dual mode command-line operation (admin/user)
  • Job/disk reclamation
  • Job Promotion
  • Centralized Collector for jobs running on multiple servers
  • Full audit trail useful for post mortems
  • Client/Server command redirection
  • Automatic job numbering
  • Automatic job locking
  • CM Abstraction for supporting additional SCM systems
  • Support for ANY build called from the command-line
  • Series or Parallel build operations
  • Client Command recording/Playback
  • Dynamic Data Gathering and Display
  • It's really cool!

Project Status

CABIE does not yet have an installer, and the README has not been completed. Although it does work there still may be some additional web files missing. If anyone is interested in deploying it in it's current state please drop me email and I will guide you through the setup and configuration.

Additional Information

Please download CABIE sources using CVS as described here. The tarball in distribution is not up to date and may cause headaches. The CVS tree has the latest sources, and a new tarball will be available prior to the end of Jan. 2007 which will include additional features.

Related resources

Screen Shots

CABIE Client binaries

build.exe - windows
build.sunos - Sparc Solaris 8+
build.darwin - Intel OS X
build.linux - Intel Linux 2.4+
build.pl - Perl 5.8x Source

CABIE Client Global Options

-s servername -p portname [-i] [command] [-S server]

The [-i] option will drop into a small interactive shell with command recall, record, replay and save functionality.

The [-S server] is server redirection.  The CABIE server  will redirect the client call to another CABIE server that may be in operation.

Current CABIE client supported command set

	adduser -p port -u username -f first -l last [-m mail ] [-g group]
	Add new user to CM server

	authorize -c computername
	authorize computername to control builds

	display list of computers authorized to control builds

	build -n jobname [-j jobno]

	buildlog -n jobname -t retail|debug
	retrieve buildlog of defined job

	changed -n jobname -j jobno [-e endjobno]
	Display list of files updated for job jobno

	cleanjob -n jobname -j jobno <-f>
	Remove all records associated with  .
	-f forces removal 

	This is permanent - it cannot not be un-done!

	clone -n oldjobname -c newjobname
	Create new job by copying oldjob configuration

	commands -l -w 
	Display supported command set

	connectlog [-l limit]
	display client connection log [limit to limit number of recs]

	createjob -n jobname 
	          -p (p4 port/cvs root/svn repository)
	          -c (p4 client/cvs module/svn directory)
	          -r sourceroot
	          -t debug|retail|both
	          -d toolsdir
	          -k keeplevel
	          -s sccs
	          -b browserlink
	          -m global failure notification
	          -C "comment"
	          [-D] dump existing job in cmd line format

	debuglog -n jobname
	complete debug log of defined job

	deluser -p port -u username [-f first -l last -g group]
	Remove user from CM server

	describe -n job
	describe charastics of defined job

	disable -n job
	Disable build job

	Display buildserver configuration loaded from buildconf.pm

	elapsed -n job
	Display elapsed time for current build job

	enable -n job [-f -k]
	Enable build job 
	[-f force semaphore removal]
	[-k kill running build process] (requires -f)

	errorlog -n jobname -t retail|debug 
	retrieve errorlog of defined job

	free -n jobname -j jobno
	Release locks allowing jobno for build jobname to be deleted
	by the buildserver

	genweb -n joblist -l limit
	Generate web view of buildserver status for jobs in joblist 
	Display up to last limit jobs

	Display buildserver process ID

	help [command]
	Display [command] usage

	incomplete -n jobname [-l limit] 
	Will display (optionally limit) build numbers of failed builds 
	for jobname

	instructions -n jobname
	instructions for building a defined job locally

	joblog -n jobname
	complete run log of defined job

	Display buildserver job status

	keep -n jobname -j jobno [-c comment]
	Keep jobname for build jobno from being automatically deleted

	kill -p pid -s signal
	kill process by PID (see ps) on the server

	lastchange -n jobname [-l n]
	display last [n] updates for jobname.

	laststart [-l n]
	display last [n] buildserver starts

	nextjob -n jobname
	display updates CM system will make for jobname with next sync

	notify -n jobname -f firstjob -l lastjob -c comment
	Send email with comment to all submitters of jobname
	from firstjob to lastjob

	promote -c comment -n jobname -j jobno [-t type -f from]
	Promote jobname jobno for formal testing or release

	ps options
	Build Unix style process table on the server

	recover -n jobname
	Recover active jobs accidently removed by enable command

	rejectlog [-l limit] 
	display client rejection log [limit to limit number of recs]

	display jobs no longer under the buildserver's control

	removejob -n jobname [-f]
	Remove defined job from the buildserver [-f permanent deletion]

	restorejob -n jobname
	Add previously defined job back to the buildserver

	runstats -n job [-l number -a -r]

	Display statistics for [optionally -l] last build jobs
	-a displays only the average build time
	-r displays raw time in ticks (seconds) useful
	for feeding into a script

	display other build servers

	shutdown buildserver processes

	status -n job 
	Check build status

	subscribe -n jobname -e emailaddress
	subscribe for automatic email notification of defined job

	subscribers -n jobname
	display email subscription list for a defined job

	synclog -n jobname
	retrieve synclog of defined job

	display hardware/software configuration for buildserver

	testserver -l || <-f server> 
	View status of servers running tests (-l)
	Free (-f servername) server for testing

	teststatus -n (jobname|all)
	          [-j jobno]
	          [-l n limit to n records]
	          [-r include running tests]
	          [-p include pending tests]
	          [-c include completed tests]

	treeperms -n job -m module -u userid -a|-r|-l (add or remove)
	Authorize/unauthorize checkins to a module

	unauthorize -c machinename
	remove computername from authorization list

	unsubscribe -n jobname -e emailaddress
	unsubscribe from automatic email notification of defined job

	display latest changes made to the build server

	xmldump -n (jobname|all)
	       [-j jobno]
	       [-s (server|all)]
	       [-l limit]
	       [-f include files]
	       [-c include comments]
	       [-t include test status]
	       [-r include running jobs]
	       [-p include promotion info]