Erste Schritte mit Orcas oder Continuous Delivery für die Datenbank leicht gemacht

Aller Anfang ist (nicht) schwer…

Vor einigen Wochen habe ich an dieser Stelle unser Framework Orcas vorgestellt und erklärt, wie damit die Konzepte von Continuous Integration und Continuous Delivery auch auf Datenbankänderungen angewendet werden können. Demjenigen, der die Probleme mit solchen Änderungen aus der Praxis kennt, haben die Vorteile dieser Vorgehensweise sicher schnell eingeleuchtet. Bis zur Umsetzung und endgültigen Lösung der Probleme ist es aber dennoch gefühlt ein großer Schritt. Schließlich muss nicht nur ein neues Framework eingeführt und der Build-Prozess entsprechend angepasst werden. Es handelt sich auch um einen kleinen Paradigmenwechsel, von dem das Entwicklungsteam und die Projektverantwortlichen überzeugt werden müssen. Umso wichtiger ist es, den Nutzen von Orcas schnell und überzeugend verifizieren und demonstrieren zu können. Dafür soll hier eine Starthilfe gegeben werden. Eine ausführliche Dokumentation mit Beispielen und einer genauen Installationsanleitung findet sich im Orcas-Projekt auf Github. Einen kurzen Überblick über die Funktionsweise und Möglichkeiten von Orcas liefert unser Whitepaper.

Benötigte Tools

Um Orcas auf einem Entwicklerrechner oder einem Server betreiben zu können, sind zunächst die folgenden Tools zu installieren. Da Gradle ggf. eine Verbindung zum Maven-Central-Repository aufbaut, muss eine Internetverbindung bestehen.

  • Java JDK (JRE reicht nicht) ab Version 1.6, es genügt die Standard Edition (SE). Das Installationsverzeichnis muss in der Umgebungsvariablen JAVA_HOME und „%JAVA_HOME%\bin“ in der Umgebungsvariablen PATH eingetragen sein.
    Test der Installation: javac –version muss die installierte Versionsnummer anzeigen.
  • Ant in der aktuellsten Version. Die Download-Datei entpacken und das Installationsverzeichnis in die Umgebungsvariable ANT_HOME eintragen. „%ANT_HOME%\bin“ muss in die Umgebungsvariable PATH eingetragen werden.
    Test der Installation: ant –version muss die installierte Versionsnummer anzeigen.
  • ant-contrib-1.0b3-bin.zip herunterladen, entpacken und ant-contrib-1.0b3.jar nach ANT_HOME/lib kopieren. Neuere Versionen von ant-contrib sind nicht kompatibel!
  • Die aktuelle Version von Gradle herunterladen und entpacken. Es muss GRADLE_HOME auf das Installationsverzeichnis gesetzt werden oder es muss der Befehl gradle in die Umgebungsvariable PATH eingetragen werden.

Der Oracle Client

Da Orcas mit Hilfe von SQL*Plus auf die Datenbank zugreift, muss in jedem Fall ein Oracle Client installiert sein. Die Umgebungsvariable ORACLE_HOME muss auf diesen Client zeigen. Dabei ist ein Instant-Client ausreichend. Die Verbindungsdaten zu den Datenbanken, die bearbeitet werden sollen, werden in der Datei tnsnames.ora eingetragen. Sie liegt beim Oracle-Client im Verzeichnis ORACLE_HOME/network/admin. Beim Instant-Client muss diese Datei dort manuell angelegt werden.

Eine erste Build-Datei

Der Start von Orcas erfolgt über eine Ant Build-Datei. Diese zentrale build.xml kann z. B. in einen Maven-Build integriert werden. Hier zunächst ein Beispiel, das die Benutzung der wichtigsten in Orcas enthaltenen Ant-Tasks illustriert. Eine vollständige Beschreibung der Tasks findet sich in der Dokumentation auf Github.

<project name=“database“>
<property name=“orcas_dir“ value=“…/orcas_core“/>
<import file=“${orcas_dir}/orcas_default_tasks.xml“/>
<property name=“orcas.default_user“ value=“${username_schemaowner}“/>
<property name=“orcas.default_password“ value=“${password_schemaowner}“/>
<property name=“orcas.default_user_orcas“ value=“${username_orcas}“/>
<property name=“orcas.default_password_orcas“ value=“${password_orcas}“/>
<property name=“orcas.default_tnsname“ value=“${database}“/>
<target name=“orcas_install“>
<orcas_install   user=“${username_dba}“   password=“${password_dba}“/>
</target>
<target name=“build_all“>
<orcas_initialize extensionfolder=“${distributiondir}/../../orcas/orcas_extensions“/>
<orcas_execute_statics   scriptfolder=“tables“   dropmode=“${dropmode}“/>
<orcas_drop_replaceables/>
<orcas_execute_scripts   scriptfolder=“views“ />
</target>
</project>

Zunächst wird hier die Datei orcas_default_tasks.xml eingebunden, die die von Orcas bereitgestellten Ant-Tasks enthält. Aus einer Properties-Datei werden Parameter wie die Datenbankverbindung und die Userdaten eingelesen. Generell muss ein Datenbankschema in das die Datenbankpackages von Orcas selbst installiert werden, sowie eines, in das die Anwendung installiert werden soll, angegeben werden. Unter bestimmten Voraussetzungen kann auch dasselbe Schema verwendet werden. Vor dem eigentlichen Build muss einmal das Target orcas_install aufgerufen werden, um Orcas auf der Datenbank zu installieren.

Der Build wird in diesem Beispiel mit dem Target build_all ausgeführt. Zur Vereinfachung enthält unser Projekt nur Tabellen und Views. Der hier gezeigte Ablauf macht Folgendes.

  • Erweiterung des Orcas-Syntax um benutzerdefinierte Extensions (siehe auch unser Whitepaper) im Task orcas_initialize.
  • Anpassung der Tabellen des Schemas an das im Ordner „tables“ hinterlegte Modell (orcas_execute_statics). Der Parameter dropmode, gibt an, ob nicht mehr benötigte Tabellen und Spalten gelöscht werden dürfen.
  • Orcas_drop_replaceables löscht alle Datenbankobjekte des Schemas (in diesem Fall nur Views), die keinen Status halten (wie auch Packages, Trigger, usw.).
  • Orcas_execute_scripts führt SQL-Skripte aus, um den aktuellen Stand dieser Objekte wieder einzuspielen (hier: nur Views).

Die Build-Datei kann leicht auf die Bedürfnisse des konkreten Projekts angepasst werden. Anregungen dazu liefern die Beispielprojekte der Dokumentation.

Kickstart

Um den Einstieg noch mehr zu erleichtern, enthält Orcas im Verzeichnis orcas_vagrant für erste Tests eine Vagrant –Konfiguration. Damit kann man eine VM konfigurieren und starten, die eine Oracle XE Datenbank enthält und in der Orcas direkt lauffähig ist. Dazu muss man nur Vagrant herunterladen, installieren und im Verzeichnis orcas_vagrant die VM mit dem Befehl vagrant up starten.

Dieser Beitrag wurde unter Software Engineering abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s