#!/bin/bash
# A modifier
ARGS=
REPDEST=/var/www
REPREPO=/var/lib/git
REPOSVR=<nom du serveur de sources>
REPO=ssh://$REPOSVR$REPREPO
PREPRODSVR=<nom du serveur de preprod>
PREPRODDOMAIN=<nom du domaine de preprod>
PRODSVR=<nom du serveur de prod>
PRODDOMAIN=<nom du domaine de prod>
# pas de modification après cette ligne
usage() {
cat <<EOF
USAGE: $0 OPTIONS appli rev
Publie une application
L'application doit être dans git
Le sous-domaine doit être créé
OPTIONS:
-d repdest Répertoire d'installation (par defaut /var/www)
-l Liste les applications disponibles
-u user Nom du user qui demande la mise en prod
-h affiche ce message
EOF
}
if [ "$#" -lt "1" ]
then
usage
exit 255
fi
while getopts "d:hlfu:" OPTION
do
case $OPTION in
h)
usage
exit 1
;;
l)
ssh $REPOSVR "ls $REPREPO | sed -e 's:.git$::'"
exit 1
;;
d)
REPDEST=$OPTARG
;;
u)
USER=$OPTARG
;;
f)
force="true"
;;
esac
done
shift $(($OPTIND - 1))
if [ "$#" -eq "1" ]
then
# afficher le dernier tag disponible
ssh $REPOSVR "cd $REPREPO/$1.git&&git describe --tags"
exit 0
fi
if [ "$force" != "true" ]
then
host=$(hostname)
if [ "$host" == "$PREPRODSVR" ]
then
domaine="$1.$PREPRODDOMAIN"
else
domaine="$1.$PRODDOMAIN"
fi
host >/dev/null -t CNAME $domaine
if [[ "$?" -ne "0" ]]
then
echo "Erreur : le domaine $domaine n'existe pas"
exit 255
fi
virt=$(grep -l $domaine /etc/apache2/sites-available/* | wc -l)
if [[ "$virt" -eq "0" ]]
then
echo "Erreur : le virtualhost apache $domaine n'existe pas"
exit 255
fi
fi
cd $REPDEST
# Si un répertoire existe déjà, on récupère la version
if [ -d $1 ]
then
version_source=$(cat $1/version.txt)
fi
rep=$1
pushd .
cd $1
if [[ -f preinstall ]]
then
echo Execution du script preinstall
chmod +x preinstall
./preinstall $version_source
fi
popd
rm -rf $rep
git archive --remote $REPO/$1.git --prefix $1/ $2 | tar -x
echo nettoyage des fichiers inutiles
cd $1
rm -rf nbproject
cat >version.txt<<EOT
$2
EOT
if [[ -f postinstall ]]
then
echo Execution du script postinstall
chmod +x postinstall
./postinstall $version_source
# puis suppression du script
if [ "$?" -eq "0" ]
then
rm postinstall
fi
fi