Hudson Continuous Integration

  • Our continuous integration server uses Hudson.
  • You can access the server here: Mifos Hudson server
  • The entire installation is in /home/hudson on a server called "birch".
  • The server uses an SSL cert from CAcert; install the CAcert root certificate to avoid browser warnings
  • Hudson runs on an Intel Xeon Quad Core 2.66 GHz Ubuntu 10.04 LTS server with 8 GB of RAM
  • If you want to be able to kick off builds or administer Hudson, request access on IRC or the mifos-developer mailing list

Maintenance

Restarting Hudson

  • on birch, run sudo service hudson restart

Adding a new branch build

  • Add a branch build via the Hudson Web UI. It is generally convenient to copy an existing job (New job → Copy existing job).

Adding a test server

Test Servers are initially configured manually, then deployment is managed by Hudson.

  • For branch builds, ie: head-master, head-1.6.x, etc.: configuration files mentioned in this section are relative to resources/continuous-integration.
  • For other test servers, ie: locale- or purpose-specific: configuration files mentioned in this section are relative to resources/continuous-integration/XXXXXX-deploy

Steps:

  1. Create a new database on birch for the instance following the existing naming convention. Run SQL scripts (latest-schema.sql, etc.) as mentioned in INSTALL.
  2. Edit mifos_conf/local.properties.
  3. Find 2 free ports on birch (I run sudo netstat -nape --listen | grep TESTPORT a few times, using different test ports), then enter these ports into tomcat/server.xml.
  4. Commit/push to sf.net.
  5. Create a new deploy build via the Hudson Web UI, following the existing naming convention. It is generally convenient to copy an existing job (New job → Copy existing job).
  6. Open firewall hole for your new server, ie: sudo ufw allow proto tcp from any to any port 8116.
  7. Add link to new server on Test Servers.

Also see this example configuration for the 1.6.x branch build.