<html>
<head>
<title>Cabie Overview</title>
</head>
<body>
<p>
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.
</p>
<h3>Mission</h3>
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.
<h3>Features</h3>
<ul>
<li>Command line interface</li>
<li>Daemon/Windows Service support</li>
<li>Web interface</li>
<li>Rapid email notification</li>
<li>MySQL support for configuration and data collection</li>
<li>Watchdog system for late jobs or insufficient resources</li>
<li>Pre/Post/Fail triggers</li>
<li>Email Subscription Mechanism</li>
<li>Dual mode operation (admin/user)</li>
<li>Job/disk reclamation</li>
<li>Client/Server command redirection</li>
<li>Automatic job numbering</li>
<li>Automatic job locking</li>
<li>CM Abstraction</li>
<li>Support for any build called from the command-line</li>
<li>Series or Parallel build operations</li>
<li>Command recording/Playback</li>
</ul>
<h3>Project Status</h3>
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.
<h3>Related resources</h3>
<ul>
<li><a href=http://www.perforce.com>Perforce</a></li>
<li><a href=http://www.cvshome.org>CVS</a></li>
</ul>
<h3>Current supported command set</h3>
<pre>
<b>adduser</b>:
adduser -p port -u username -f first -l last [-m mail ] [-g group]
Add new user to CM server
<b>authorize</b>:
authorize -c computername
authorize computername to control builds
<b>authorized</b>:
authorized
display list of computers authorized to control builds
<b>build</b>:
build -n jobname [-j jobno]
<b>buildlog</b>:
buildlog -n jobname -t retail|debug
retrieve buildlog of defined job
<b>changed</b>:
changed -n jobname -j jobno [-e endjobno]
Display list of files updated for job jobno
<b>clone</b>:
clone -n oldjobname -c newjobname
Create new job by copying oldjob configuration
<b>commands</b>:
commands -l -w
Display supported command set
<b>connectlog</b>:
connectlog [-l limit]
display client connection log [limit to limit number of recs]
<b>createjob</b>:
createjob -n jobname
-p (p4 port/cvs root)
-c (p4 client/cvs module)
-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
<b>cvsperms</b>:
cvsperms <list|project> <module> "users"
Update module userlist
<b>debuglog</b>:
debuglog -n jobname
complete debug log of defined job
<b>deluser</b>:
deluser -p port -u username [-f first -l last -g group]
Remove user from CM server
<b>describe</b>:
describe -n job
describe charastics of defined job
<b>disable</b>:
disable -n job
Disable build job
<b>dumpconfig</b>:
dumpconfig
Display buildserver configuration loaded from buildconf.pm
<b>elapsed</b>:
elapsed -n job
Display elapsed time for current build job
<b>enable</b>:
enable -n job [-f -k]
Enable build job
[-f force semaphore removal]
[-k kill running build process] (requires -f)
<b>errorlog</b>:
errorlog -n jobname -t retail|debug
retrieve errorlog of defined job
<b>free</b>:
free -n jobname -j jobno
Release locks allowing jobno for build jobname to be deleted
by the buildserver
<b>genweb</b>:
genweb -n joblist -l limit
Generate web view of buildserver status for jobs in joblist
Display up to last limit jobs
<b>getid</b>:
getid
Display buildserver process ID
<b>help</b>:
help [command]
Display [command] usage
<b>incomplete</b>:
incomplete -n jobname [-l limit]
Will display (optionally limit) build numbers of failed builds
for jobname
<b>instructions</b>:
instructions -n jobname
instructions for building a defined job locally
<b>joblog</b>:
joblog -n jobname
complete run log of defined job
<b>jobstate</b>:
jobstate
Display buildserver job status
<b>keep</b>:
keep -n jobname -j jobno [-c comment]
Keep jobname for build jobno from being automatically deleted
<b>kill</b>:
kill -p pid -s signal
kill process by PID (see ps) on the server
<b>lastchange</b>:
lastchange -n jobname [-l n]
display last [n] updates for jobname.
<b>laststart</b>:
laststart [-l n]
display last [n] buildserver starts
<b>nextjob</b>:
nextjob -n jobname
display updates CM system will make for jobname with next sync
<b>notify</b>:
notify -n jobname -f firstjob -l lastjob -c comment
Send email with comment to all submitters of jobname
from firstjob to lastjob
<b>promote</b>:
promote -n jobname -j jobno -c "comment"
Promote jobname jobno for formal testing
<b>ps</b>:
ps options
Build Unix style process table on the server
<b>recover</b>:
recover -n jobname
Recover active jobs accidently removed by enable command
<b>rejectlog</b>:
rejectlog [-l limit]
display client rejection log [limit to limit number of recs]
<b>removed</b>:
removed
display jobs no longer under the buildserver's control
<b>removejob</b>:
removejob -n jobname [-f]
Remove defined job from the buildserver [-f permanent deletion]
<b>restorejob</b>:
restorejob -n jobname
Add previously defined job back to the buildserver
<b>runstats</b>:
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
<b>servers</b>:
servers
display other build servers
<b>shutdown</b>:
shutdown
shutdown buildserver processes
<b>status</b>:
status -n job
Check build status
<b>subscribe</b>:
subscribe -n jobname -e emailaddress
subscribe for automatic email notification of defined job
<b>subscribers</b>:
subscribers -n jobname
display email subscription list for a defined job
<b>synclog</b>:
synclog -n jobname
retrieve synclog of defined job
<b>sysinfo</b>:
sysinfo
display hardware/software configuration for server
<b>unauthorize</b>:
unauthorize -c machinename
remove computername from authorization list
<b>unsubscribe</b>:
unsubscribe -n jobname -e emailaddress
unsubscribe from automatic email notification of defined job
<b>whatsnew</b>:
whatsnew
display latest changes made to the build server
</pre>
</body>
</html>