Je mets très souvent mon blog à jour à partir de la dernière version SVN de Dotclear 2.0.
Jusqu'à présent, je faisais un svn co sur ma machine locale, puis je virais les répertoires inutiles (rm -rf `find ./ -name .svn`) et enfin j'envoyais le tout sur mon ftp.
On obtient alors une version de Dotclear à jour et sans fichiers .svn. Le revers de la médaille étant le temps passé à faire la manip'. Je me suis donc fais un petit script pour automatiser tout ça :
- Mise à jours des sources de Dotclear à partir du SVN.
- Mise à jour et téléchargement de nouveaux plugins à partir du SVN de Dotclear.
- Mise à jour de la base de données (visite de la page d'admin).
- Vidage le cache.
Comme je suis un Geek très flémard et qui n'a peur de rien : j'ai mis le tout en tâche cron.
#!/bin/bash
###############################################################################
#
# dc-svn-co :
# Mise à jour d'une installation Dotclear 2.0 à partir des sources du SVN.
#
# Dépendances requises :
# - subversion
# - curl
#
# Attention : L'utilisation de ce script permet de mettre à jour votre instance
# de Dotclear à partir d'une version dite instable !
# Utiliser à vos risques et périls !
#
# Licence Dotclear : http://www.dotclear.net/license.html
#
# by Guillaume Kulakowski a.k.a LLaumgui <guillaume at llaumgui dot com>
# Version 2.0
#
###############################################################################
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not,
# - write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
# - See http://www.gnu.org/licenses/gpl.html
###############################################################################
######################################
# Variables :
# Chemin vers l'installation de Dotclear :
DC_CORE_PATH="/home/www.xxx.com/www"
# Chemin vers les plugins de Dotclear :
DC_PLUGIN_PATH="$DC_CORE_PATH/plugins"
# Chemin vers le cache :
DC_CACHE_PATH="$DC_CORE_PATH/cache"
# Liste des plugins à récupérer à partir du svn :
DC_PLUGIN_LIST="antiflood commentsWikibar dayMode emailNotification gallery related sitemaps spamplemousse2"
# Chemin vers votre administration (pour la requête de mise à jour) :
DC_URL="http://www.xxx.com/admin/"
SVN_DC_URL="https://svn.dotclear.net/2.0/trunk"
SVN_DC_PLUGIN_URL="https://svn.dotclear.net/2.0/plugins"
######################################
# # # # # #
# # # /!\ On touche plus /!\ # # #
# # # # # #
######################################
###
# Mise à jour à partir du SVN :
function svnCo() {
cd "$1"
svn co "$2" ./
}
###
# Mise à jour de la liste des plugins à partir du svn :
function svnPlugin () {
for plugin in $DC_PLUGIN_LIST; do
echo -e "\n\n############### $plugin ###############"
# Création du répertoire pour les nouveaux plugins :
if [ ! -d $DC_PLUGIN_PATH/$plugin ]; then
echo "Le répertoire $plugin n'existe pas !"
echo "Création du répertoire $plugin."
mkdir "$DC_PLUGIN_PATH/$plugin"
fi;
svnCo "$DC_PLUGIN_PATH/$plugin" "$SVN_DC_PLUGIN_URL/$plugin"
done;
}
###
# Mise à jour de la base par appel de l'url de l'admin :
function updateDB() {
curl $DC_URL
}
###
# On vide le cache
function cleanCache() {
rm -rf "$DC_CACHE_PATH/cbfeed"
rm -rf "$DC_CACHE_PATH/cbtpl"
}
echo "################################################################################"
echo "# #"
echo "# Mise à jour de Dotclear à partir des sources SVN #"
echo "# #"
echo "################################################################################"
svnCo "$DC_CORE_PATH" "$SVN_DC_URL"
echo -e "\n\n\n\n\n\n################################################################################"
echo "# #"
echo "# Mise à jour de la liste des plugins #"
echo "# #"
echo "################################################################################"
svnPlugin
echo -e "\n\n\n\n\n\n################################################################################"
echo "# #"
echo "# Opérations de mise à jours #"
echo "# #"
echo "################################################################################"
echo ""
echo -e "\n### Mise à jour de la base de données ###"
updateDB
echo -e "\n\n### Vidage du cache ###"
cleanCache
Je mets à disposition mon script (sous licence GPL) tout en précisant que son utilisation réfléchie ne pose pas de problème (pas plus qu'un checkout) mais qu'une mise à jour automatisée au moment où la révision Subversion plante (ça peut arriver), fait buger le site jusqu'à la mise à jour suivante...
Mise à jour : Métro-sexualisation du code pour un rapport par mail (crontab) plus lisible.
Derniers commentaires
jeudi 15 mai 2008, 22:02
jeudi 15 mai 2008, 21:56
jeudi 15 mai 2008, 21:54
jeudi 15 mai 2008, 21:53
jeudi 15 mai 2008, 21:30
jeudi 15 mai 2008, 20:54
jeudi 15 mai 2008, 20:52
jeudi 15 mai 2008, 20:34
jeudi 15 mai 2008, 19:53
jeudi 15 mai 2008, 19:48