Einleitung
Das Coummunity Build Framework ist Grundlage für eine solide Entwicklungsumgebung von Pentaho Solutions. Leider ist die Anwendung des CBF für Personen, die sonst mit Java Entwicklung nicht viel zu tun haben, recht komplex. Nach einer längeren Probier- und Fragephase ist die folgende Schritt- für Schritt Anleitung entstanden, die die Installation und Konfiguration des CBF auf einem Linux-Ubuntu System beschreibt.
Installation
UNIX Benutzer anlegen
Damit man mit möglichst wenig Einflüssen aus anderen Programminstallationen und deren Konfigurationsdateien zu tun hat, installiere ich das CBF unter einem eigenen, neuen UNIX Benutzer, der nur das CBF beherbergen soll.
Um gleich mit der richtigen Übersicht zu starten, werden ein paar Verzeichnisse angelegt.
# Create a new user as root su - adduser cbfadmin su - cbfadmin mkdir -p ~/work/Downloads mkdir -p ~/work/cbf
Da ich keine Parameter angegeben habe legt Linux einen ganz normalen User mit dem Home Laufwerk unter home/cbfadmin an. Dort werden die Verzeichnisse unter ~/work angelegt.
Repository Clients etc.
Um die Sourcen von Pentaho aus dem SVN Repository zu holen, brauche ich einen Subversion Client. Da dieser nicht allzu versionskritisch ist, installiere ich der Einfachheit halber aus den Ubuntu Paketquellen. Für die CTools von Webdetails benötige ich weiterhin einen git client. Bei späteren Downloads werde ich auch wget und rsync verwenden, also installiere ich das gleich mit :
# Install some packages using apt su - apt-get install subversion git-core wget rsync
Java
Die richtige Java Umgebung kann für die Lauffähigkeit der Pentaho Lösung entscheidend sein. Damit diese unabhängig vom Linux System variiert werden kann, entscheide ich mich für eine lokale Java Installation nur für das CBF. Dazu lade ich die Java JDK Binaries als *tar.gz direkt von der SUN/Oracle Website ( http://www.oracle.com/technetwork/java/javase/downloads/index.html ) herunter und speichere die Datei unter ¨/work/Downloads. Dort werden alle Downloads gesammelt, damit man nachvollziehen kann, aus welchen Dateien das CBF zusammengesetzt ist.
# Install a fresh JDK su - cbfadmin cd ~/work tar xvfz Downloads/jdk-6u29-linux-i586.tar.gz ln -s jdk-1.6.0_29 jdk
Damit alle Konfigurationen sein können werden, erstelle ich einen symbolischen Link „jdk“, der auf das „jdk1.6.0_29“ verweist. Alle Java Aufrufe des Benutzers cbfadmin sollen auf diese Java Installation umgelenkt werden, die evtl. vorhandenen Installationen im System sollen nicht mehr verwendet werden. Dafür legen wir eine
.profile Datei an, die alle Benutzerspezifischen Einstellungen enthalten wird :
# Configure JDK su - cbfadmin cd ~ echo '# JAVA settings' > .profile.cbf echo 'JAVA_HOME=$HOME/work/jdk' >> .profile.cbf echo 'PATH=${JAVA_HOME}/bin:$PATH' >> .profile.cbf echo 'export JAVA_HOME PATH' >> .profile.cbf echo >> .profile.cbf echo '. $HOME/.profile.cbf' >> .profile
Nach dem Erstellen bzw. Erweitern der .profile Dateien muss man den Benutzer einmal ab- und wieder anmelden, damit die Einstellungen in der Shell verfügbar sind. Alternativ kann natürlich auch die .profile manuell ausgefuehrt werden.
cd ~ . ./.profile
Zum Abschluss der Java Installation machen wir noch einen Test :
# Test JDK configuration type java java -version
Herauskommen sollte der Pfad zum ~/work/jdk/bin/java sowie eine Meldung, die die 1.7x Version von Java ausgibt.
ANT
Ant ist der make Mechanismus für Java. Obwohl ant über die Ubuntu Sourcen installiert werden kann, entscheide ich mich für eine manuelle Installation. Damit habe ich einfacher Einfluss auf die verwendeten Versionen.
Die Pakete habe ich hierher geholt http://ant.apache.org/bindownload.cgi, im Zweifel sollte man dort auch nach den aktuellen Versionen forschen.
# Download and install ANT as cbfadmin cd ~/work/Downloads wget http://ftp-stud.hs-esslingen.de/pub/Mirrors/ftp.apache.org/dist//ant/binaries/apache-ant-1.8.2-bin.tar.gz cd .. tar xvfz Downloads/apache-ant-1.8.2-bin.tar.gz ln -s apache-ant-1.8.2 ant
Auch hier legen wir wieder einen symbolischen Link an, der die Konfiguration in der .profile.cbf versionsunabhängig macht.
# configure ANT as cbfadmin cd ~ echo '# ANT Settings' >> .profile.cbf echo 'ANT_HOME=${HOME}/work/ant' >> .profile.cbf echo 'PATH=${ANT_HOME}/bin:$PATH' >> .profile.cbf echo 'export ANT_HOME PATH' >> .profile.cbf echo >> .profile.cbf
Nun muss Ant noch um eine Bibliothek erweitert werden : JUnit. JUnit kann über http://www.junit.org bezogen werden. Auch diese Bibliothek ist OpenSource. Wir benötigen die junit-x.yy.jar Datei und laden sie nach ~/work/Downloads. Anschliessend wird diese Datei nach ${ANT_HOME}/lib kopiert.
# copy JUnit to ant/lib cd ~ cp ~/work/Downloads/junit*jar $ANT_HOME/lib
Wie bei der Java Installation bietet es sich auch hier an einen kurzen Check auszuführen :
# test ANT configuration cd ~ . ./.profile type ant ant -version
Wenn die Ausgaben auf die richtige Ant Version verweisen ist alles ok, und wir können uns dem nächsten Paket widmen.
Tomcat
Der Applicationserver Tomcat wird ebenfalls lokal beim Benutzer cbfadm installiert. Da der Tomcat auch ein Apache Projekt ist, kann er auch von dort bezogen werden. Die aktuelleren Versionen des Pentaho Servers lassen sich scheinbar mit allen Tomcat Versionen >= 5.5 und < 7 kopilieren. Der BI-Server 3.6 verwendet angeblich ausschliesslich den Tomcat 5.5 , getestet habe ich das aber nicht.
Die Download URL muss man anhand der zu verwendenden Version selber ermitteln – Ausgangspunkt ist http://tomcat.apache.org. Zunächst werden wir eine 6.0.x Version verwenden.
# Install TOMCAT as cbfadmin cd ~/work/Downloads wget http://apache.mirror.digionline.de/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.tar.gz cd .. tar xvfz Downloads/apache-tomcat-6.0.35.tar.gz ln -s apache-tomcat-6.0.35 tomcat
Damit ist die Software installiert, fehlt noch die Konfiguration. Diese erfolgt analog zu denen in den letzten Abschnitten :
# configure Tomcat as cbfadmin cd ~ echo '# TOMCAT settings' >> .profile.cbf echo 'TOMCAT_HOME=$HOME/work/tomcat' >> .profile.cbf echo 'PATH=${TOMCAT_HOME}/bin:$PATH' >> .profile.cbf echo 'export TOMCAT_HOME PATH' >> .profile.cbf echo >> .profile.cbf
Und abschliessend wieder ein Test :
# test TOMCAT Installation cd $TOMCAT_HOME/bin ./version.sh
Neben der Meldung des Tomcats sollte auch ein Verweis auf die verwendete JVM erscheinen, die unserer lokalen Installation entsprechen muss.
CBF Quickstart Package
Pedro Alves ist der Urheber des CBF. Auf der Seite seiner Firma Webdetails lässt sich ein Quickstart Package des CBF downloaden, welches ich als Basis meiner Installation verwenden möchte :
# Install CBF Quickstart package su - cbfadmin cd ~/work/Downloads wget http://cbf.webdetails.org/sites/cbf.webdetails.org/files/resources/cbf-quickstart-3.7.tgz cd .. tar xvfz Downloads/cbf-quickstart-3.7.tgz mv cbf-quickstart/ cbf
Ein erstes CBF Projekt
Was passiert nun
CBF baut aus den Sourcen von Pentaho eine lauffähige Umgebung, fügt die selbstentwickelten Solutions hinzu und ersetzt Teile vom Pentaho System durch Patches, die der Entwickler hinzufügt. Zudem kann CBF Variablen in allen Scripten durch Vorgaben in Konfigurationsdateien ersetzen. Dafür müssen wir noch einige, teilweise optionale Dinge vorbereiten :
- Anlegen der Verzeichnisse, die die Builds und Solutions aufnehmen sollen
- Erstellen geeigneter Konfigurationen
- Erstellen eigener Solutions
- Erstellung von Patches
In diesem Abschnitt soll mit einem einfachen Testprojekt das generelle Vorgehen beschrieben werden.
Pentaho Sourcen holen
Die relevanten Pentaho Sourcen können unter http://source.pentaho.org/svnroot/bi-platform-v2/tags eingesehen und heruntergeladen werden. Da ich mit der Coummunity Edition arbeite, sind für mich ausschliesslich die „stable“ Versionen von Interesse. Alle anderen Versionen, z.B. „GA“ und „RC*“ scheinen nicht von Interesse zu sein oder nur für die Enterprise Edition.
Also bleiben ( Stand 10.1.2012 ) die Versionen 3.5-stable – 3.10-stable über. Da ich mit verschiedenen Versionsständen kompilieren möchte, lade ich die für mich relevanten Versionen herunter :
# get Pentaho Sources su - cbfadmin cd ~/work/cbf svn co svn://source.pentaho.org/svnroot/bi-platform-v2/tags/3.10.0-stable pentaho-3.10
Repository vorbereiten
Der Pentaho BI Server speichert einige Informationen in zwei Repository Datenbanken, Quartz und Hibernate ab. Desweiteren gibt es noch eine Datenbank „sampledata“, die alle Informationen beinhaltet, die für die BI-Server Demo Solutions verwendet werden. Im Grundzustand wird dafür eine HSQL Datenbank verwendet, was aber Problemlos auf MySQL, Postgres, Oracle etc. umkonfiguriert werden kann.
Für diesen Build möchten wir die HSQLDB verwenden. Die Grunddaten für die DBs liegen im Sourcenverzeichnis und müssen noch eine geeignete Stelle verschoben werden :
# move HSQL data to a proper location su - cbfadmin cd ~/work/cbf mkdir hsqldb cp pentaho-3.10/bi-platform-sample-data/hsqldb/* hsqldb
Die Konfiguration, die dem Build Prozess sagt, wo die DB Daten liegen, ändern wir in den nächsten Abschnitten.
Projekt anlegen
Im CBF Quickstart Package ist bereits ein vorkonfiguriertes Projekt enthalten. Dieses wollen wir als Grundlage für ein neues, eigenes Projekt nutzen. Zunächst wird einfach das Projektverzeichnis kopiert. Der neue Ordnername
soll der Konvention „project-“ folgen. Für ein Testprojekt wählen wir folgendes :
# copy default client project to new test project cd ~/work/cbf cp -pr project-client project-test
Nun kommt der zunächst wichtigste Teil, die build Properties müssen gesetzt werden. Das sind die Umgebungsvariablen, die den Buildprozess steuern.
In den Properties möchten wir dem Build z.B. mitteilen, dass die Pentaho 3.10 Sourcen genutzt werden.
Zu diesem Zweck legen wir unter ~/work/cbf/project-test/config die Datei build-testenv.properties an. Die Datei build.properties im gleichen Verzeichnis kann dazu als Vorlage dienen.
Zunächst gehen wir mal vom einfachsten Fall aus. Es soll lediglich ein build durchgeführt werden. Es stehen keine Ersetzungen von Variablen in Scripten an und es soll auch kein Deployment erfolgen.
Desweiteren legen wir hier eine benutzerdefinierte Variable HSQLDATAPATH an, die auf das zuvor angelegte Repository-Verzeichnis verweist.
Damit reduziert sich das Properties File auf ein Minimum :
# Content of ~/work/cbf/project-test/config/build-testenv.properties # # Paths javac.path = /home/work/cbf/jdk/bin/javac # Build Directories, relative to project home target-dist = target-dist/ solution.path = solution/ pentaho.build.dir = target-build/ # Tomcat and Java Props server.name = tomcat java.opts = -Dfile.encoding=utf-8 -Xmx512m -XX:MaxPermSize=512m -Djava.awt.headless=true # Project props project.revision=3.10.0-stable pentaho.dir = pentaho-3.10/ # HSQLDATAPATH HSQLDATAPATH = /home/cbfadmin2/work/cbf/hsqldb
Das CBF Quickstart Package ist auf einen Pentaho 3.8 Build vorbereitet. Da wir nun einen Build einer 3.10 Version durchführen wollen, muss noch ein Patch geändert werden. Dazu wechseln wir in das Verzeichnis ~/work/cbf/project-test/patches/target-dist/server/webapps/pentaho/WEB-INF. In diesem Verzeichnis residiert die Datei web.xml. Sie muss gegen ihr Pendant aus der 3.10er Version ausgetauscht werden.
# configure web.xml su - cbfadmin cd ~/work/cbf/project-test/patches/target-dist/server/webapps/pentaho/WEB-INF mv web.xml web.xml.orig cp ~/work/cbf/pentaho-3.10/bi-platform-appserver/webapps/pentaho/WEB-INF
In dieser Datei müssen wir auch noch eine Änderung bzgl. des HSQLDB Datenverzeichnisses machen. Mit einem geeigneten Editor suchen wir die Zeile :
sampledata@../../data/hsqldb/sampledata,hibernate@../../data/hsqldb/hibernate,quartz@../../data/hsqldb/quartz
und ersetzen sie durch die folgende :
sampledata@@HSQLDATAPATH@/sampledata,hibernate@@HSQLDATAPATH@/hibernate,quartz@@HSQLDATAPATH@/quartz
Build durchführen
Ok, fast am Ziel. Jetzt wird sich zeigen, ob die Installation und Konfiguration korrekt ist. Der im ersten Lauf recht langwierige Buildprozess kann nun mit folgenden Statements gestartet werden :
su - cbfadmin cd ~/work/cbf ant -Dproject=test -Denv=testenv dist-clean all
Ant werden einige Parameter übergeben
- -Dproject referenziert das Projektverzeichnis. Dieses haben wir project-test genannt, davon abgeleitet ist Dproject=test
- -Denv referenziert die zu verwendende Konfigurationsdatei innerhalb des Projektverzeichnis. Da wir die Datei build-testenv.properties genannt haben, übergeben wir nun testenv als Parameter.
„dist-clean“ und „all“ bezeichnen nun die Vorgänge, die ant ausführen soll. Im Klartext heisst das nun aufräumen und alle Dateien bauen.
Alle möglichen Ant Direktiven kann man mit
ant -Dproject=test -Denv=testenv -p
auf den Bildschirm drucken.
Den Build testen
An dieser Stelle sei angenommen, dass der Build erfolgreich gelaufen ist. D.h., dass im ~/target-dist Verzeichnis nun ein ausführbarer Pentaho Server vorliegt, der mit der Solution im project-test/solutions Verzeichnis ausgeführt werden kann.
Gestartet wird der Server in der Entwicklungsumgebung mit folgendem Kommando :
ant -Dproject=test -Denv=testenv run
Unter der URL http://localhost:8080 kann man nun auf den selber generierten Server zugreifen.
Links
http://diethardsteiner.blogspot.com/2010/11/how-to-set-up-pentaho-community-build.html#CBF_Build_XML_3504060094710439
http://pedroalves-bi.blogspot.com/2009_11_01_archive.html
http://wiki.pentaho.com/display/COM/CBF+-+Community+Build+Framework#CBF-CommunityBuildFramework-Download
http://cbf.webdetails.org