# HG changeset patch # User ymh # Date 1271971044 -7200 # Node ID bd6f820fb7e1b4d24c09a4532859ad8fc681bb3a # Parent 66d4c55571f97d26bb0e20c1f04a5cb06802bafb improve sync script diff -r 66d4c55571f9 -r bd6f820fb7e1 build/sbin/sync_mosatags --- a/build/sbin/sync_mosatags Tue Apr 20 15:22:07 2010 +0200 +++ b/build/sbin/sync_mosatags Thu Apr 22 23:17:24 2010 +0200 @@ -1,27 +1,312 @@ -#!/bin/env bash - -prod_web_server=94.247.233.8 -prod_engine_server=94.247.233.9 - -dev_web_server= -dev_engine_server= - -prod_sync_user=mosatags -env_sync_user=mosatags - -checkout_sources() { - hg clone - hg archive - -} - -sync_web() { - - #symphony freeze - #rsync -} - -sync_engine() { - #rsync -} - +#!/bin/env bash + +prod_web_server=94.247.233.8 +prod_engine_server=94.247.233.9 + +dev_web_server=194.254.167.53 +dev_engine_server=194.254.167.54 + +prod_sync_user=mosatags +dev_sync_user=mosatags + +web_location=/srv/www/mosatags +engine_location=/srv/tomcat/mosatags + +hg_server=www.iri.centrepompidou.fr/dev/hg/mosatags +hg_server_protocol=https + +hg_anonymous_user=anonymous +hg_anonymous_password=Ajee8eev + +clone_path=~/tmp/mosatags_clone +export_path_prefix=~/tmp/mosatags_ + +sync_type='all' +server='dev' +hg_user="$hg_anonymous_user:$hg_anonymous_password"; +hg_operation='update' +debug=false + +usage() { + #-----0123456789012345678901234567890123456789012345678901234567890123456789 + echo "Usage: $0 [option] version" + echo " version: mosatags version" + echo "options:" + echo " -h: help" + echo " -t : one of web|engine|all" + echo " -s : one of dev or prod" + echo " -o : one of update|archive" + echo " -l : the url of the hg repository" + echo " -u : hg user" + echo " -c : path for cloning the repository" + echo " -e : path prefix for export. The version will be" + echo " appended. ignored when hg operation is \"update\"" + echo " -d: debug mode. display only environement" +} + +checkout_sources() { + echo "==============="; + echo "Checkout source"; + + if [ -d "$clone_path" ]; then + pushd "$clone_path"; + + hg_clone_url=`hg paths|grep "^default"`; + hg_clone_url=${hg_clone_url##"default = "}; + echo "Repository path = |$hg_clone_url|, must be |$hg_url|."; + if [[ "$hg_url" =~ "${hg_clone_url}" ]]; then + echo "Repository already exists pull" + hg pull -f || { echo "problem when pulling"; exit;} + else + echo "Repository bad url, deleting clone." + popd + rm -fr $clone_path + pushd "$clone_path" + fi + fi + if [ ! -d "$clone_path" ]; then + echo "Clone repository" + hg clone -U $hg_url "$clone_path" || { echo "problem when cloning"; exit;} + pushd "$clone_path" + fi + + if [ "$hg_operation" == "archive" ]; then + if [ -d "$export_path" ]; then + rm -fr $export_path + fi + echo "archive version $version in $export_path" + hg archive -r $version "$export_path" || { echo "problem when archiving"; exit;} + else + echo "force update $version in $export_path" + hg update -C -r $version + fi + + popd; + + echo "checkout done"; +} + +cleanup() { + echo "==============="; + echo "cleanup"; + if [ -d "$export_path" && "$export_path" != "$clone_path" ]; then + echo "Delete export_path : $export_path" + #rm -fr $export_path; + echo "ok"; + fi +} + +sync_web() { + echo "==============="; + export_path_web="$export_path"/web/thdProject; + server_ip_name=$server"_web_server"; + server_ip=${!server_ip_name}; + sync_user_name=${server}_sync_user; + sync_user=${!sync_user_name} + echo "sync web from $export_path_web to $server_ip ($server_ip_name) with user $sync_user ($sync_user_name)"; + if [ -d "$export_path_web" ]; then + pushd "$export_path_web"; + if [ -d web/sf ]; then + echo "cleaning symfony folder"; + rm -fr web/sf; + fi + php symfony freeze data/; + popd; + echo rsync -Cvrlz --delete --filter=". -" "$export_path_web" $sync_user@$server_ip:$web_location + cat <