[Dcmlib] firewall + CVS + dashboard

jean-michel.rouet at philips.com jean-michel.rouet at philips.com
Thu Feb 24 09:16:01 CET 2005


On 23/02/2005 18:50:54 Mathieu Malaterre wrote:
>Jean-Michel,
>
>Est-ce que tu peux me rappeler ce que tu utilises pour eviter le
>probleme du firewall ? J'aimerais ajouter ca dans le Wiki VTK.
>

Bonjour,

en fait ca depend probablement du type de firewall utilisé.
Moi, pour tous les acces exterieur, je dois passer par un proxy http avec 
authentification (username + password).
Pour cela j'ai modifié un peu CMake (dans 
CMake/Source/CTest/cmCTestSubmit.cxx) pour ajouter le support "proxy 
autehntication".
Andy Cedilnik a commité ce changement dans la version CVS de CMake.
En gros ca prend en compte deux nouvelles variables d'environnement: 
HTTP_PROXY_USER et HTTP_PROXY_PASSWD qu'il faut positionner correctement, 
en plus des anciennes (HTTP_PROXY et HTTP_PROXY_PORT)
example en sh/bash/zsh: 
export HTTP_PROXY=myhttpproxy.somecompany.com
export HTTP_PROXY_PORT=8080
export HTTP_PROXY_USER=joe
export HTTP_PROXY_PASSWORD=secret
Ca ca permet donc a CTest de soumettre les resultats du dashboard via http 
authentifié

Du coté de gdcm, j'ai modifié un peu DartConfig.cmake, pour qu'il utilise 
le support HTTP de CTest, plutot que le support FTP:
donc remplacer:
SET (DROP_SITE "public.kitware.com")
SET (DROP_LOCATION "/incoming")
SET (DROP_SITE_USER "ftpuser")
SET (DROP_SITE_PASSWORD "public")
SET (DROP_METHOD "ftp")
par:
SET (DROP_SITE "public.kitware.com")
SET (DROP_LOCATION "/cgi-bin/HTTPUploadDartFile.cgi")
SET (DROP_METHOD "http")

petite note au passage, si le firewall propose un proxy-ftp, il peut etre 
configuré comme suit (depend du proxy bien entendu, ici je montre 
l'exemple des proxies ftp qui prennent comme arguement USER at SITE, mais il 
en existe bien d'autre sortes...)
SET (DROP_SITE "myftpproxy.somecompany.com")
SET (DROP_LOCATION "/incoming")
SET (DROP_SITE_USER "ftpuser at public.kitware.com")
SET (DROP_SITE_PASSWORD "public")
SET (DROP_METHOD "ftp")
Le probleme c'est que Dart impose quand meme un déclenchement 
("triggering") en utilisant HTTP, donc de toutes facons il faudra 
configurer positionner les variables d'environnement HTTP_* pour passer a 
l'exterieur...

SET (TRIGGER_SITE 
"http://public.kitware.com/cgi-bin/Submit-Public-TestingResults.pl")

Bon, enfin une derniere subtilité, c'est comment faire fonctionner CVS 
avec le firewall ? car CTest execute automatiquement CVS update avant 
chaque test !
Je ne vais pas m'etendre sur les details car c'est compliqué, mais donner 
une ou deux pistes:

HTTPort (http://www.htthost.com/) 
ssh + proxytunnel (http://proxytunnel.sourceforge.net/)

Moi j'ai HTTPort qui ecoute en local un port (exemple 24012) et redirige 
ca, sur cvs.creatis.insa-lyon.fr sur le port 2402 (port CVS utilisé a 
GDCM) via un tunnelling http sur le proxy authentifié... ouf.

Du coup mon CVSROOT n'est plus 
":pserver:anonymous at cvs.creatis.insa-lyon.fr:2402/cvs/public", mais 
":pserver:anonymous at localhost:24012/cvs/public"

Pour faire marcher le tout, j'ai un script cmake que je lance 
automatiquement la nuit avec la commande:
ctest.exe -V -S myscript.gdcm.cmake

il suppose que j'ai un repertoire f:/temp qui contient déjà:
gdcmData   (les images de test)
gdcm            (le checkout courant de GDCM)

il mentionne egalement d'autres chemins en dur comme, le chemin de CMake 
et celui de CVS... a adapter selon les cas bien entendu.

Voici le script:
###################################################################
# The values in this section must always be provided
###################################################################

# if you do not want to use the default location for a
# dashboard then set this variable to the directory
# the dashboard should be in
SET (CTEST_DASHBOARD_ROOT "f:/temp")

# this is the cvs module name that should be checked out
SET (CTEST_MODULE_NAME GDCM)

# these are the the name of the source and binary directory on disk. 
# They will be appended to DASHBOARD_ROOT
SET (CTEST_SOURCE_NAME gdcm)
SET (CTEST_BINARY_NAME gdcmbin)

SET (CTEST_SOURCE_DIRECTORY 
"${CTEST_DASHBOARD_ROOT}/${CTEST_SOURCE_NAME}")
SET (CTEST_BINARY_DIRECTORY 
"${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}")
 
# what cvs command to use for configuring this dashboard
SET (CTEST_CVS_COMMAND "d:/Programs/cygwin/bin/cvs.exe")

# which ctest command to use for running the dashboard
SET (MY_CMAKE_ROOT E:/rouet/src/cmake/CMakeBin/bin/release)
SET (CTEST_COMMAND 
  "${MY_CMAKE_ROOT}/ctest.exe -D Nightly -A 
\"${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}\""
)

# what cmake command to use for configuring this dashboard
SET (CTEST_CMAKE_COMMAND "${MY_CMAKE_ROOT}/cmake.exe")


####################################################################
# The values in this section are optional you can either
# have them or leave them commented out
####################################################################

# should ctest wipe the binary tree before running
SET (CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE)

# this is the initial cache to use for the binary tree, be careful to 
escape
# any quotes inside of this string if you use it
SET (CTEST_INITIAL_CACHE "

//Name of the build
BUILDNAME:STRING=GDCM-msdev_Vs71

//Name of the computer/site where compile is being run
SITE:STRING=joebar

BUILD_EXAMPLES:BOOL=1
BUILD_SHARED_LIBS:BOOL=1

GDCM_DATA_ROOT:PATH=${CTEST_DASHBOARD_ROOT}/gdcmData

CVS_UPDATE_OPTIONS:STRING=-d -P -A
DROP_SITE_METHOD:STRING=http
DROP_SITE_LOCATION:STRING=/cgi-bin/HTTPUploadDartFile.cgi
")

SET (CTEST_ENVIRONMENT
  "GDCM_DICT_PATH=${CTEST_DASHBOARD_ROOT}/gdcm/Dicts"
  "CVSROOT=:pserver:anonymous at localhost:24012/cvs/public"
)

# set any extra directories to do an update on
SET (CTEST_EXTRA_UPDATES_1 "${CTEST_DASHBOARD_ROOT}/gdcmData" "-dAP")
SET (CTEST_EXTRA_UPDATES_2 "${CTEST_DASHBOARD_ROOT}/gdcm" "-dAP")



Voila j'espere que c'est clair et que ca remplira bien ton WIKI. Si tu as 
d'autres questions, n'hesites pas !
Bonne traduction en english ;-)

JM
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.creatis.insa-lyon.fr/pipermail/dcmlib/attachments/20050224/17bf5424/attachment.html>


More information about the Dcmlib mailing list