This page describes a previous hudson/jenkins based approach. Repository layout has changed from monolithic horde repo to per-package repos. Also, current CI mostly depends on travis hosted by github.com ======================== Continuous Integration ======================== The `continuous integration system for Horde`_ constantly monitors the integrity of the Horde build, does quality control checks, and publishes the resulting data. .. _`continuous integration system for Horde`: http://ci.horde.org The system is based on `Hudson`_ and uses the `PHP Hudson tools`_ as build environment. .. _`Hudson`: http://hudson-ci.org .. _`PHP Hudson tools`: http://github.com/wrobel/php-hudson-tools You should be able to get the same system up and running in no time on your local machine. --------------- Prerequisites --------------- For the following to work there are a few elements required on your machine: * Make * PHP with the xdebug extension * PEAR * Java (Sun JDK) * Ant -------------- Installation -------------- Clone the `Horde Support`_ repository first: .. _`Horde Support`: http://github.com/horde/horde-support :: git clone git://github.com/horde/horde-support.git As a first step we will install Hudson and all the plugins we need to cater for the tools used when running the build: :: cd horde-support/ci-hudson make install Now you can start Hudson (it will listen to the default port 8080 unless you don't modify anything in etc/hudson. :: make start The command should start the Hudson daemon with no output. Check that Hudson is running and can be reached via the network (e.g. localhost:8080). Now you should be able to login as a standard user from your system. At this time none of the jobs will have been build. To start the process all you need to do is to trigger the php-hudson-tools job once. ----------------- Adding new jobs ----------------- New jobs should be added locally first in order to test them before they are ran on `ci.horde.org`_ as any failing build there results in mails to the commits@horde.org mailing list. .. _`ci.horde.org`: http://ci.horde.org Adding a new job is simple. Insert the framework package name in the Makefile within horde-support/ci-hudson: :: JOBS=Autoloader Argv Constraint Controller ... New_Job ... In order to prepare this job you now need to setup the basic configuration for it by running :: make job-New_Job Restart your Hudson from within Hudson ("Manage Hudson" -> "Reload") and configure both the horde and the php-hudson-tools job to trigger the new job. Trigger the new job or horde now and verify the job builds. If it does you should copy the .gitignore file from another job to the directory of the new job. Finally you can commit the new configuration to the horde-support repository. Ping `Gunnar`_ to get the job included on `ci.horde.org`_. .. _`Gunnar`: mailto:wrobel@horde.org .. _`ci.horde.org`: http://ci.horde.org -------------- ci.horde.org -------------- As a Horde developer you should be able to log into Hudson via your usual Horde developer credentials. You have full rights to start/stop builds and administrate the Hudson installation. ---------- Problems ---------- I cannot login ============== Try to disable the security feature at least temporarily so that you are able to enter the system. Once you changed to a security configuration that should allow you to login to the system you can turn the protection back on. Edit workdir/config.xml and ensure the useSecurity setting is set to false: :: false Now restart Hudson on the command line with: :: init.d/hudson start init.d/hudson stop After you modified the security settings to your liking you need to restart Hudson again. This time you should be able to do this from within Hudson ("Manage Hudson" -> "Reload").