Donnerstag, 30. August 2007

Automatisierter Build und Deployment II

Um auf einem Apache und einem Tomcat den trunk, release und tag parallel laufen lassen zu können, empfielt es sicht, mit viruellen Host zu arbeiten. Dafür sollte man den Apache per DNS auf die Staging Maschine zeigen lassen, z.B.
nslookup staging.myproject.company.com
Server:  dns.company.home
Address:  192.168.1.12

Non-authoritative answer:
Name:    linux.company.com
Address:  192.168.1.2
Aliases:  staging.myproject.company.com

Im Apache werden dann 3 virtuelle Hosts definiert: trunk, release und tag, z.B.:

VirtualHost  trunk.myproject.company.com:80 trunk.myproject.company.com:443>
 ServerAlias trunk.myproject.company.com
 ServerName trunk.myproject.company.com
 ServerAdmin sysadmin@company.com
 DocumentRoot /var/www/myproject/trunk
 ...
>
Analog wird das gleiche noch für release und tag definiert.

Der Tomcat bekommt pro Entwicklungsstand einen eigenen CATALINA_HOME. Dort wird die jeweilige Version deployed, z.B. das WAR file für Release 3.
Per Apache Rewrite Regeln kann man Requests auf ein einen Applikationskontext vom Apache an den Tomcat weiterleiten. 

Fertig! Jetzt kann man auf der gleichen Maschine drei unterschiedliche Entwicklungsstände zeigen. 

Im kommenden Post beschreibe ich, wie man das automatisiseren kann.

Automatisierter Build und Deployment

Bei agiler Vorgehensweise ist es sehr wichtig, dass sowohl der Kunde als auch das Team immer eine lauffähige Version der Software in einer dedizierten Umgebung einsehen kann, wobei ich mich hier auf Web Applikationen beziehe. Oft kommt noch hinzu, dass man nicht nur den aktuellen Entwicklungsstand, sondern auch den aktuellen und manchmal parallel auch den vorherigen Release plus Tag Version einsehen möchte. 

Wie macht man das?

Es gibt Tools, die einen unterstützten, z.B. Buildix - was allerdings gleich mit dem gesamten Projektmanagement auffährt. Neben Buildix gibt es noch andere Tools, auf die ich hier nicht weiter eingehen möchte.

Es geht auch ohne Tools ganz einfach. Ich bevorzuge für die Staging Umgebung eine Linux Maschine, z.B. CentOS. Hier werden folgende Infrastruktur Tools installiert:
- subversion/cvs client
- maven/ant

Um den Build das Deployment zu automatisieren, schreit man ein Shell-script, z.B.:

#!/bin/bash
REPO="https://svn.company.com/myproject"
ARTIFACTID="webapplication_xyz"
CURRENT_RELEASE=branches/release_1
CURRENT_TAG=tags/release_1-0-0

source $HOME/.bashrc

function deploy_static {
 rm -rf /var/www/myproject
 svn co ${REPO}/${ARTIFACTID}/${CURRENT_RELEASE} /var/www/myproject/release
 svn co ${REPO}/${ARTIFACTID}/${CURRENT_TAG} /var/www/myproject/tag
 svn co ${REPO}/${ARTIFACTID}/trunk /var/www/myproject/trunk
}

if [ "$1" = "" ]; then
 echo "$0 [deploy_static ]"
else
$1 $2
fi

Dieses Script can dann je nach Bedürfnissen so angepasst werden, dass z.B. der JAVA Code compiliert wird und ein WAR file auf dem Tomcat deployed wird. In meinem Beispiel wird lediglich statischer Content auf den Apache deployed.

Im nächsten Post beschreibe ich, wie man das ganze noch automatisiert.

Montag, 20. August 2007

Konstanzer Linie 908 für den iPod


Mal wieder mit dem Bus unterwegs durch Konstanz stellte sich heute bei mir erneut die Frage: "Mit welchem Bus muss ich fahren?" und "Wann fährt ein Bus zurück?"...

Dank des Online-Auftritts der Stadtwerke Konstanz kann man sich gut auf die Reise vorbereiten und alles rund um den "Roten Arnold" erfahren und sogar als PDF runterladen, OK.
Da ich unterwegs nicht immer einen Internetzugang habe, kein Papier ausdrucken und rumtragen möchte und meinen iPod eh immer bei mir trage und gern mit nützlichen Daten füttere, habe ich mal wieder Fahrpläne digitalisiert und aufbereitet - Linie 908.

Einfach runterladen, entpacken und als Photo's auf den iPod G5 synchronisien.

Wer gern noch andere Linien abbilden möchte, hier die Anleitung und Vorlage ...

Viel Spass

Donnerstag, 2. August 2007

TargetProcess 2.5 released


TargetProcess kommt bei der neuen Version 2.5 mit einem sehr guten HelpDesk Adapter daher.

Oft gibt es während der Iterationen Anfragen, neue Requirements, Verbesserungen und sonstigen Feedback (auch von nicht Scrum Mitgliedern), die aber nicht klar als User Story identifizierbar sind, dennoch aber im System verwaltet werden sollten - HelpDesk. Man kann den HelpDesk Adapter per Excel, Email oder einem externen HelpDesk Portal verwenden - nicht schlecht. Wir werden das mal probieren, denn die Zusammenarbeit mit Excel ist immer noch üblich, auch wenn es unschön ist.