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]