Donnerstag, 30. August 2007

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.

Keine Kommentare: