Ecco lo script completo per la creazione di un sistema di “nightly build” per flatnuke. Rispetto all’articolo “Cvs auto login” ho modificato l’invocazione di expect in quanto lo script eseguito da crontab riporta un errore dovuto alla presenza del comando interact che si aspetta una interazione con la tastiera e cron ovviamente non può aprire un terminale in input.

interact: spawn id exp0 not open
    while executing
"interact"

Ho modificato il login prendendo spunto da uno script per il login ssh ma in rete si trovano anche altri esempi. Invocazione dello script da crontab:

$ crontab -l
59 23 * * * /home/soci/aalex/cvs_con_tar.sh > /home/soci/aalex/cvs_con_tar.log 2>&1

Prima di editare la crontab (crontab -e), verificate che l’editor di default sia il vi (in caso contario esportate la variabile d’ambiente EDITOR settando il vostro editor preferito).

$ export EDITOR=vi

Infine lo script completo:

#!/bin/bash

DATA=$(date '+%Y%m%d')
VERSION="3.0.0"
HOST="flatnuke.cvs.sourceforge.net"
USER="anonymous"
HOME_TAR="/home/soci/aalex/www/AutoIndex/appoggio/flatnuke_nightly"

VAR=$(expect -c "
spawn cvs -d:pserver:$USER@$HOST:/cvsroot/flatnuke login
expect \"CVS password:*\"
send -- \"\r\"
expect eof
")
echo "==============="
echo "$VAR"
cvs -z3 -d:pserver:$USER@$HOST:/cvsroot/flatnuke co -P flatnuke

mkdir flatnuke-${VERSION}-${DATA}
cp -ivr flatnuke/* flatnuke-${VERSION}-${DATA}
tar zcvf flatnuke-${VERSION}-${DATA}.tar.gz --exclude=CVS flatnuke-${VERSION}-${DATA}
rm -rf flatnuke-${VERSION}-${DATA}
md5sum flatnuke-${VERSION}-${DATA}.tar.gz > flatnuke-${VERSION}-${DATA}.md5
mv flatnuke-${VERSION}-${DATA}.tar.gz $HOME_TAR/
mv flatnuke-${VERSION}-${DATA}.md5 $HOME_TAR/
find $HOME_TAR/ -name 'flatnuke-3*' -mtime +15 -exec rm -f {} \;

L’output completo è visibile qui (è una directory di Autoindex, un file manager in php) ; in particolare sono presenti i tar compressi e i relativi md5 degli ultimi 15 giorni.

[ad name=”HTML”]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.