You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 28 Next »

Qpid uses the Apache Infrastructure CI service, which is a Jenkins installation. More details are available from the Apache wiki. Builds can run on any operating system instance available, or be locked to a particular type. It may be necessary to restrict some build types to Unix instances only, but using Hudson will give access to Solaris and Windows Server build environments which will be useful for interoperability testing. If a build tool such as Maven is used, even tighter integration with the build process is available, including better test access and the ability to use the Apache Maven repository for publishing artefacts.

Implementation

The implementation of CI for Qpid is being tracked as QPID-3149.

Operation

All builds are prefixed with Qpid- to allow grouping together, the Qpid view shows all jobs matching this pattern.

The following builds are configured:

Build

Trigger

Description

Qpid-Java-Java-TestMatrix

check-in

Tests the Java client with Java broker.
Matrix project permutating AMQP 0-10/0-9-1 protocols and BDB/In-Memory message store implementations

Qpid-Java-Cpp-Test

check-in

Tests the Java client with the C++ Broker.

Qpid-Java-Java-Test-IBMJDK1.6

every 24h

Tests the Java client with Java broker under IBM JDK 1.6. AMQP 0-10 only.

Qpid-Java-Java-Test-JDK1.7

every 24h

 

Tests the Java client with Java broker under IBM JDK 1.6. AMQP 0-10 only.


Qpid-Python-Java-Test

every 24h

Tests the Python client with the Java Broker.

Qpid-Python-Cpp-Test

every 24h

Tests the Python client with the C++ Broker.

Qpid-Java-Java-Test-0.14

every 24h

0.14 Release branch test. Tests the Java client with Java broker. AMQP 0-10 only.

Qpid-Java-Artefact-Release

every 24h

Generates Maven artefacts for the Java Client/Broker

A timeout of 60 minutes is set for all jobs.

Java Build Configuration

The Java builds use the latest 1.6 release of the JDK, and the latest available Ant version, which are both dependent on the versions available on the Hudson instance running the job.

Only JUnit test results are reported on currently.

The release job archives the following files:

  • */release/.zip
  • */release/.tar.gz
  • */release/maven//.*

Cpp Build Configuration

The following commands are used to perform the Cpp build.

cd trunk/qpid/cpp
./bootstrap; ./configure CXXFLAGS="-Wno-unused-result";make clean; make -j4

(As of November 2011, the Ubuntu packages dependencies were: subversion automake autoconf libtool ruby sasl2-bin uuid-dev g++ libicu42 libstdc++6-4.4-dev python-dev python2.6-dev libboost1.40-dev libboost1.40-dev libboost-program-options-dev libboost-filesystem-dev).

Python Test Configuration

The following commands are used to run the Python tests:

cd trunk/qpid/python
ulimit -n 1024 # Workaround QPID-3237 - reduce open filehandles
ant -file qpid-python-test-ant.xml -Dqpid.executable=../java/build/bin/qpid-server -Dpython.test.ignore=-I../java/test-profiles/python_tests/Java010PythonExcludes "-Dpython.test.modules=-mqpid_tests.broker_0_10 -m qmf.console" -Dqpid.port=25672 -Dqpid.executable.args="-p 25672 -m 25000" test

Future

Jenkins can be configured to provide many more features with its built-in plugins. These include:

  • FIXME/TODO task reporting
  • Javadoc publishing
  • Coverage reports

The use of these plugins will be investigated once the basic build and test cycle is satisfactorily configured. Future functionality proposed includes:

  • Integrate CPP Tests
  • Switch CPP Build to use cmake
  • Integrate Windows build for Java and CPP Brokers
  • Publishing SNAPSHOT versions of Maven artefacts to the Apache repository after a successful nightly build

Notifications

All jobs are configured to send email notifications@qpid.apache.org when a build fails, becomes unstable or returns to stable.

Currently Andrew, RajithRobbie and Keith have access to the build configurations.

  • No labels