ConfigurationHudson
Contents |
Introduction
- L'intégration continue va permettre de récupérer les sources du projet, compiler, lancer et exécuter les tests selenium de manière automatique.
- Ici, nous utilisons Hudson
- les "jobs" sont situés dans ~/.hudson/
- télécharger hudson et le lancer via la commande :
java -jar hudson.jar --httpPort=8888
- se connecter sur http://MonServeur:8888
- les plugins à installer sont:
- Xvnc plugin
- seleniumq plugin [télécharger ici]
Firefox 3
- Installer firefox via ce lien
- pour tester si firefox fonctionne bien, se connecter avec un ssh -X sur le serveur et lancer le programme
- si la fenêtre s'ouvre, pas de souci
- si jamais une fenêtre de dialogue informe qu'il faut changer de version de gtk+ (passer de la 2.8 à la 2.10), alors suivre cette procédure et rajouter dans le .profile de l'utilisateur la ligne suivante :
export LD_LIBRARY_PATH="/opt/gtk210/lib"
selenium server
- récupérer l'archive via ce lien
- extraire selenium-server.jar et le mettre dans le répertoire contenant la testsuite
Configuration Xvnc pour un serveur type dedibox sous debian
- apt-get install xfonts-base xfs imagemagick libstdc++2.10-glibc2.2
- installer vnc sur la dedibox
- avec l'utilisateur qui lance hudson définir un mdp
- /usr/bin/vnc/vncpasswd
- afin de créer le fichier ~/.vnc/passwd (afin que l'on ne puisse pas afficher l'écran sans taper le mdp si usage d'un logiciel vnc client)
- configurer ensuite au niveau des paramètres hudson le chemin vers le fichier Xvnc
/usr/bin/vnc/Xvnc :10 -geometry 800x600 -fp /usr/share/fonts/X11/misc
- Activer l'option Xvnc au niveau du build
- Liens qui m'ont été utiles
Configuration du job selenium
via ANT
- Structure du fichier ant
<?xml version="1.0" encoding="UTF-8"?>
<project name="Selenium testing" default="build" basedir=".">
<property environment="env" />
<property name="test.suite" value="${basedir}/TestSuite.html" />
<property name="firefox" value="*firefox /usr/lib/firefox3/firefox3-bin"/>
<property name="base.url" value="http://localhost:4455" />
<property name="firefox.profile.dir" value="/var/www/vdev/Profil" />
<property name="result.file" value="result_${env.BUILD_NUMBER}_${env.BUILD_ID}.html" />
<property name="result.dir" value="${basedir}/result" />
<target name="run-selenium-tests">
<mkdir dir="${result.dir}" />
<java jar="${basedir}/selenium-server.jar"
fork="true" spawn="false">
<arg line="-port "4455""/>
<arg line="-htmlSuite "${firefox}""/>
<arg line=""${base.url}""/>
<arg line=""${test.suite}""/>
<arg line=""${result.dir}/${result.file}""/>
<arg line="-avoidProxy" />
<arg line="-timeout 30000"/>
<arg line="-debug"/>
<arg line="-trustAllSSLCertificates"/>
<arg line="-firefoxProfileTemplate "${firefox.profile.dir}""/>
<arg line="-browserSessionReuse"/>
<arg line="-log "${basedir}/log.log""/>
<arg line="-singleWindow" />
</java>
<echo message="Copying result.html"/>
<copy file="${result.dir}/${result.file}" todir="${env.WORKSPACE}/../builds/${env.BUILD_ID}/"/>
<echo message="Copying log file"/>
<copy file="log.log" todir="${env.WORKSPACE}/../builds/${env.BUILD_ID}/"/>
</target>
<target name="storingResults">
<echo message="Renaming result.html to result_BUILDNUMBER_DATE.html"/>
<copy file="${result.dir}/result.html" tofile="${result.dir}/${result.file}"/>
</target>
<target name="stop-server">
<get taskname="selenium-shutdown"
src="http://localhost:4455/selenium-server/driver/?cmd=shutDown"
dest="result.txt" ignoreerrors="true" />
<echo taskname="selenium-shutdown" message="DGF Errors during shutdown are expected" />
</target>
<target name="info">
<echo message="Affichage des variables Hudson pour ANT"/>
<echo message="buildId = ${env.BUILD_ID}" />
<echo message="buildNumber = ${env.BUILD_NUMBER}"/>
<echo message="jobName = ${env.JOB_NAME}"/>
<echo message="buildTag = ${env.BUILD_TAG}"/>
<echo message="executorNumber = ${env.EXECUTOR_NUMBER}"/>
<echo message="javaHome = ${env.JAVA_HOME}"/>
<echo message="workspace = ${env.WORKSPACE}"/>
<echo message="hudsonURL = ${env.HUDSON_URL}"/>
<echo message="SVN revision = ${env.SVN_REVISION}"/>
<echo message="cvs branch = ${env.CVS_BRANCH}"/>
<echo message="basedir = ${basedir}" />
</target>
</project>
via le plugin seleniumhq
Création du projet selenium
via ANT
- créer un projet "free-style" vide
- le lancer une fois pour qu'il crée les dossiers
- dans le workspace, ajouter le fichier build.xml pour ant, mettre selenium-server.jar, la testsuite et si nécessaire les tests selenium
- retourner à la configuration du projet
- dans la config, appeler la tâche ant run-selenium-tests
via seleniumhq
Enchaînements de builds
Le but ici va être d'enchaîner les actions suivantes :
- mettre à jour le projet
- faire un ant clean-all
- faire un ant run-install
- lancer le serveur
- effectuer les tests
- arrêter le serveur
Pour cela nous allons créer deux projets :
- un pour lancer ofbiz
- un pour l'arrêter
Configuration du lancement
- nouveau projet free-style, nom monProjetDeDemarrage
- Gestion de code source
- subversion
- URL du repository
http://svn.apache.org/repos/asf/ofbiz/trunk
- Répertoire local du module (optionnel)
ofbiz
- Ajouter une étape au build
- Appeler Ant
ant clean-all ant run-install
- Exécuter un script shell
cd ofbiz/
echo "Starting ofbiz be patient .."
sleep 10
# shutdown settings
ADMIN_PORT=10523
ADMIN_KEY=so3du5kasd5dn
# console log file
OFBIZ_LOG=runtime/logs/console.log
# delete the last log
rm -f $OFBIZ_LOG
# VM args
ADMIN="-Dofbiz.admin.port=$ADMIN_PORT -Dofbiz.admin.key=$ADMIN_KEY"
#DEBUG="-Dsun.rmi.server.exceptionTrace=true"
#automatic IP address for linux
#IPADDR=`/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
#RMIIF="-Djava.rmi.server.hostname=$IPADDR"
MEMIF="-Xms128M -Xmx512M"
#MISC="-Duser.language=en"
VMARGS="$MEMIF $MISC $DEBUG $RMIIF $ADMIN"
# Worldpay Config
#VMARGS="-Xbootclasspath/p:applications/accounting/lib/cryptix.jar $VMARGS"
# location of java executable
if [ -f "$JAVA_HOME/bin/java" ]; then
JAVA="$JAVA_HOME/bin/java"
else
JAVA=java
fi
# start ofbiz
$JAVA $VMARGS -jar ofbiz.jar $* >>$OFBIZ_LOG 2>>$OFBIZ_LOG&
ok=true
echo "."
while($ok)
do
if [ -z "$(grep -i 'CatalinaContainer.java:235' runtime/logs/console.log)" ]; then
echo -n "."
sleep 4
else
ok=false
fi
done
echo "ofbiz Ready, Starting Selenium Test .."
- Actions à la suite du build
- Construire d'autres projets (projets en aval)
le nom de mon projet selenium
Configuration de l'arrêt
- nouveau projet freestyle
- Construire à la suite d'autres projets
le nom de mon projet selenium
- Build
- Executer un script shell
cd ~/.hudson/jobs/ofbizTrunk/workspace/ofbiz sh stopofbiz.sh sleep 4 sh stopofbiz.sh
Il faut mettre le chemin vers le workspace
- Et c'est tout !
Erreurs au lancement
- si dans la console ref :
Couldn't open RGB_DB '/usr/X11R6/lib/X11/rgb'
alors faire un
cp /etc/X11/rgb.txt /usr/X11R6/lib/X11/
- si dans la console
_XSERVTransSocketINETCreateListener: ...SocketCreateListener() failed _XSERVTransMakeAllCOTSServerListeners: server already running Fatal server error: Cannot establish any listening sockets - Make sure an X server isn't already running
alors faire un
netstat -ln
et rechercher s'il y a une connexion sur le port 6000 + n° de display et puis trouver ce qui traine derrière


