6.0.0-git
2019-12-14

Diff for Doc/Dev/CI between 7 and 8

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 [http://ci.horde.org continuous integration system for Horde] constantly monitors the integrity of the Horde build, does quality control checks, and publishes the resulting data.

The system is based on [http://hudson-ci.org Hudson] and uses the [http://github.com/wrobel/php-hudson-tools PHP Hudson tools] as build environment.

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 [http://github.com/horde/horde-support Horde Support] repository first:

<code>
git clone git://github.com/horde/horde-support.git
</code>

As a first step we will install Hudson and all the plugins we need to cater for the tools used when running the build:

<code>
cd horde-support/ci-hudson
make install
</code>

Now you can start Hudson (it will listen to the default port 8080 unless you don't modify anything in {{etc/hudson}}.

<code>
make start
</code>

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 [http://ci.horde.org ci.horde.org] as any failing build there results in mails to the {{commits@horde.org}} mailing list.

Adding a new job is simple. Insert the framework package name in the {{Makefile}} within {{horde-support/ci-hudson}}:

<code>
JOBS=Autoloader \
     Argv \
     Constraint \
     Controller \
     ...
     New_Job \
     ...
</code>

In order to prepare this job you now need to setup the basic configuration for it by running

<code>
make job-New_Job
</code>

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 [mailto:wrobel@horde.org Gunnar] to get the job included on [http://ci.horde.org 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}}:

<code>
<useSecurity>false</useSecurity>
</code>

Now restart Hudson on the command line with:

<code>
init.d/hudson start
init.d/hudson stop
</code>

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").