cornercorner
FeaturesPluginsDocs & SupportCommunityPartners

DeadlockMachineAdmin

Revision as of 15:28, 6 November 2009 by Admin (Talk | contribs)
(diff) ← Older revision | Current revision (diff) | Newer revision → (diff)

Administration of deadlock.netbeans.org

See also: DeadlockMachine

Use port 222 for SSH by adding to /etc/ssh/ssh_config:

Host deadlock.netbeans.org
  Port 222

Commit triggers

Now disabled.

  • commits to netbeans.org CVS trigger commit mail
  • first sent to cvs@module.netbeans.org
  • hopefully this alias' subscription list always contains nbcvs@netbeans.org
  • nbcvs@deadlock.nbextras.org is a subscriber
  • /etc/aliases causes this to run /hudson/nbcvs as hudson
  • /hudson/nbcvs is a script to manage commit triggers
  • logs go to /hudson/nbcvs.log so you can ssh ... tail -200f /hudson/nbcvs.log to debug
  • module(s) and optional branch info are extracted from mail message
  • "module" here means CVS top-level module / SourceCast project, not NB module project!
  • if branch matches a Hudson project and >=1 affected modules are in its checkout, then that project is scheduled to be built
  • for trunk commit, trunk and nbms-and-javadoc projects are scheduled to be built, if >=1 affected module is in its checkout
  • first cvsup is run in "fast" mode on affected modules only
  • if cvsup is already running from another commit, will queue them up to make sure repo contains this commit's changes before scheduling project to be built
  • OpenGrok is also triggered for trunk commits

CVSup

  • /cvsup contains a CVSup mirror of cvs.netbeans.org:/cvs
  • controlled by /cvsup/supfile
  • actual data in /cvsup/nb_all
  • owned by user hudson
  • normally locked by /cvsup/etc/lock,
  but CVSROOT/history updates locked by /cvsup/etc/lock-history
  • besides commit triggers, also run daily (check: crontab -l)
 (now disabled)

Hudson

  • Hudson admins can create new projects to build easily
  • choose project name = Hg clone name if possible
  • you can copy an existing project for quicker set-up
  • the first time your project is built, Hudson will do a full checkout; after that, update only
  • we run Ant explicitly (i.e. choose Shell Command option)
  • Java, Ant in path; /opt/java is JDK 5, /opt/jdk6 also available
  • build trigger section should use Hg polling
  • if possible, keep any nontrivial commands to run the build in nb.org Hg in nbbuild/hudson
  • trunk build has some special features
  • commit verification/validation always run
  • note that commit validation is unreliable: fails sporadically
  • separate project tries to build API Javadoc, NBMs, and JNLP too
  • this is currently disabled from commit triggers for performance reasons; still runs 3x daily
  • to keep Hudson up to date:
  • monitor Hudson news
  • when a new plugin we use is released, download it from Manage Plugins; after that, or a new version of Hudson is available, click Prepare for Shutdown
  • when idle, run: ssh hudson@deadlock.netbeans.org /hudson/upgrade.sh
  • OK to run >1 project at a time even if they use commit validation: each should be run in its own Xvnc display (see project config page)
  • Monitoring Hudson is easy.
  • To look at the log of a running build in real time:
  ssh hudson@deadlock.netbeans.org taillog nbms-and-javadoc

OpenGrok

Currently broken.

  • lives in /opengrok/
  • Just plain installation, no special config yet. This means committers names' are linked back to OpenSolaris site. Will fix later.
  • Only did a tiny patch in the RCS parser lib used by OpenGrok to work around stupidities we have in our CVS repository like slash in tagnames.
  • ctags is not the best way to do xref for java files, it creates hyperlinks even for "extends"
  • OpenGrok indexes only modules in the standard NetBeans module set, ie no uml, no bpel, it runs over the hudson workspace dir *after* the builds. Even build products like class files are indexed. We need to adjust the "clean" target to clean those working files but keep the end products (zip, javadoc, xtest results) and "real-clean" to clean everything. Or do something else because running "clean" at the end of each hudson build would spoil incremental builds
  • It's fast, really fast

FishEye / Crucible

Disabled.

  • lives in /fisheye/
  • dependent on regular updates of /cvsup/nb_all/CVSROOT/history
  • Custom Authenticator using netbeans.org website login to authenticate users

Sorcerer

A Java source browser. See /sorcerer (run on a cron job).

Broken.

Lighttpd

The delegating web server.

Needs to have its logs set up to autorotate - they get huge! Trung suggests:

  1. change the log verbosity to CRIT
  2. remove the date based file naming
  3. set up log rotate, see /etc/logrotate.d/* for inspiration