Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #!/bin/bash
  2.  
  3. # A modifier
  4. ARGS=
  5. REPDEST=/var/www
  6. REPREPO=/var/lib/git
  7. REPOSVR=<nom du serveur de sources>
  8. REPO=ssh://$REPOSVR$REPREPO
  9. PREPRODSVR=<nom du serveur de preprod>
  10. PREPRODDOMAIN=<nom du domaine de preprod>
  11. PRODSVR=<nom du serveur de prod>
  12. PRODDOMAIN=<nom du domaine de prod>
  13.  
  14. # pas de modification après cette ligne
  15. usage() {
  16. cat <<EOF
  17. USAGE: $0 OPTIONS appli rev
  18. Publie une application
  19. L'application doit être dans git
  20. Le sous-domaine doit être créé
  21.  
  22. OPTIONS:
  23.     -d repdest  Répertoire d'installation (par defaut /var/www)
  24.     -l      Liste les applications disponibles
  25.     -u user     Nom du user qui demande la mise en prod
  26.     -h      affiche ce message
  27. EOF
  28. }
  29.  
  30.  
  31. if [ "$#" -lt "1" ]
  32. then
  33.     usage
  34.     exit 255
  35. fi
  36. while getopts "d:hlfu:" OPTION
  37. do
  38.     case $OPTION in
  39.         h)
  40.             usage
  41.             exit 1
  42.             ;;
  43.         l)
  44.             ssh $REPOSVR "ls $REPREPO | sed -e 's:.git$::'"
  45.             exit 1
  46.             ;;
  47.         d)
  48.             REPDEST=$OPTARG
  49.             ;;
  50.         u)
  51.             USER=$OPTARG
  52.             ;;
  53.         f)
  54.             force="true"
  55.             ;;
  56.     esac
  57. done
  58. shift $(($OPTIND - 1))
  59.  
  60. if [ "$#" -eq "1" ]
  61. then
  62.         # afficher le dernier tag disponible
  63.     ssh $REPOSVR "cd $REPREPO/$1.git&&git describe --tags"
  64.     exit 0
  65. fi
  66.  
  67. if [ "$force" != "true" ]
  68. then
  69.     host=$(hostname)
  70.     if [ "$host" == "$PREPRODSVR" ]
  71.     then
  72.         domaine="$1.$PREPRODDOMAIN"
  73.     else
  74.         domaine="$1.$PRODDOMAIN"
  75.     fi
  76.  
  77.     host >/dev/null -t CNAME $domaine
  78.     if [[ "$?" -ne "0" ]]
  79.     then
  80.         echo "Erreur : le domaine $domaine n'existe pas"
  81.         exit 255
  82.     fi
  83.  
  84.     virt=$(grep -l $domaine /etc/apache2/sites-available/* | wc -l)
  85.     if [[ "$virt" -eq "0" ]]
  86.     then
  87.         echo "Erreur : le virtualhost apache $domaine n'existe pas"
  88.         exit 255
  89.     fi
  90. fi
  91.  
  92. cd $REPDEST
  93.  
  94. # Si un répertoire existe déjà, on récupère la version
  95. if [ -d $1 ]
  96. then
  97.     version_source=$(cat $1/version.txt)
  98. fi
  99.  
  100. rep=$1
  101. pushd .
  102. cd $1
  103. if [[ -f preinstall ]]
  104. then
  105.     echo Execution du script preinstall
  106.     chmod +x preinstall
  107.     ./preinstall $version_source
  108. fi
  109.  
  110. popd
  111. rm -rf $rep
  112.  
  113. git archive --remote $REPO/$1.git --prefix $1/ $2 | tar -x
  114.  
  115. echo nettoyage des fichiers inutiles
  116. cd $1
  117. rm -rf nbproject
  118.  
  119. cat >version.txt<<EOT
  120. $2
  121. EOT
  122.  
  123. if [[ -f postinstall ]]
  124. then
  125.     echo Execution du script postinstall
  126.     chmod +x postinstall
  127.     ./postinstall $version_source
  128.     # puis suppression du script
  129.     if [ "$?" -eq "0" ]
  130.     then
  131.         rm postinstall
  132.     fi
  133. fi