Dopo un lungo periodo di gestazione, finalmente e’ venuto alla luce questo post, che personalmente reputo molto interessante (ma va??).
Come introdotto dal titolo, espongo uno scenario di uso che mostra come poter integrare Subversion con lo sviluppo e il mantenimento della nostra web application. Nel dettaglio, con web application intendo un applicativo PHP installato in diversi server di produzione: quindi, un punto di sviluppo, tanti punti di utilizzo.
Bene, ipotizziamo ora il workflow per l’installazione per un nuovo cliente: connessione remota verso il server, quindi decompressione (se abbiamo una tarball o un archivio compresso) oppure copia (nel caso di singoli files), niente di trascendentale, quindi; il discorso si complica nel caso in cui ci accorgiamo che il nostro prodotto contiene un bug, oppure se abbiamo apportato modifiche interessanti allo stesso, e in questo caso dobbiamo operare a mano nelle n installazioni, con il rischio di sbagliare/dimenticarsi qualcosa.
E’ qui che Subversion viene in nostro aiuto per realizzare una specie di sistema di installazione/aggiornamento automatizzata di tipo “push” (spero che il termine sia giusto).
Tag: subversion
Quando Subversion incontra lo sviluppo web
Giocando con Subversion
Ieri sera ho giocato un po’ con Subversion, cercavo la possibilita’ di effettuare un post sul blog in seguito ad un commit. Conoscevo la presenza dei famosi post-commit hooks, ma quelli presenti erano relativi all’invio di una mail. Ho rispolverato il mio Python, e ho scritto questo script che, tramite l’uso della libreria xmlrpclib, contatta il servizio XML-RPC interno a WordPress, e provvede alla creazione di un nuovo post contenente i dati relativi al messaggio del commit, e l’elenco dei files modificati (questi ultimi due dati mi arrivano tramite l’invocazione del comando svnlook).
Lo script e’ veramente semplice, e molto customizzabile, spero possa essere un buono spunto per qualcuno.Ah, ne ho parlato anche nell’ user group del Google Project Hosting, spero che mi ascoltino…
Ecco il codice
#!/usr/bin/pythonimport sys
import xmlrpclib
import osxmlrpc_url = "http://localhost/wp/xmlrpc.php"
xmlrpc_username = "admin"
xmlrpc_password = "admin"
post_title = "Commit log"repos = sys.argv[1]
rev = sys.argv[2]log_message = os.popen('svnlook log ' + repos).read()
affected_files = os.popen('svnlook changed ' + repos).read()server = xmlrpclib.Server(xmlrpc_url)
server.metaWeblog.newPost(1,xmlrpc_username,xmlrpc_password,{"title":post_title, "description":"Message: " + log_message + "Affetcted files: \n" + affected_files},bool(1))
Alla prox
[tags]subversion, python, XML-RPC, post-commit hooks, wordpress[/tags]