Login | Register
My pages Projects Community openCollabNet

cabie
Project home

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.

Mission

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.

Features

  • 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:
	adduser -p port -u username -f first -l last [-m mail ] [-g group]
	Add new user to CM server

authorize:
	authorize -c computername
	authorize computername to control builds

authorized:
	authorized
	display list of computers authorized to control builds

build:
	build -n jobname [-j jobno]


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

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

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

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

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

commands:
	commands -l -w 
	Display supported command set

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

createjob:
	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:
	debuglog -n jobname
	complete debug log of defined job

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

describe:
	describe -n job
	describe charastics of defined job

disable:
	disable -n job
	Disable build job

dumpconfig:
	dumpconfig
	Display buildserver configuration loaded from buildconf.pm

elapsed:
	elapsed -n job
	Display elapsed time for current build job

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

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

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

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

getid:
	getid
	Display buildserver process ID

help:
	help [command]
	Display [command] usage

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

instructions:
	instructions -n jobname
	instructions for building a defined job locally

joblog:
	joblog -n jobname
	complete run log of defined job

jobstate:
	jobstate
	Display buildserver job status

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

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

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

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

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

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

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

ps:
	ps options
	Build Unix style process table on the server

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

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

removed:
	removed
	display jobs no longer under the buildserver's control

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

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

runstats:
	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

servers:
	servers
	display other build servers

shutdown:
	shutdown
	shutdown buildserver processes

status:
	status -n job 
	Check build status

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

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

synclog:
	synclog -n jobname
	retrieve synclog of defined job

sysinfo:
	sysinfo
	display hardware/software configuration for buildserver

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

teststatus:
	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:
	treeperms -n job -m module -u userid -a|-r|-l (add or remove)
	Authorize/unauthorize checkins to a module

unauthorize:
	unauthorize -c machinename
	remove computername from authorization list

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

whatsnew:
	whatsnew
	display latest changes made to the build server

xmldump:
	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]