JOOMLA & I PROJECT BUILD AUTOMATION



Documenti analoghi
Eclipse e Subversion

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A.

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Application Server per sviluppare applicazioni Java Enterprise

MANUALE PARCELLA FACILE PLUS INDICE

Guida all installazione e configurazione di Joomla 1.5

Guida all'installazione del CMS PrestaShop

Capitolo 4 Pianificazione e Sviluppo di Web Part

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Guida all uso di Java Diagrammi ER

Apache 2, PHP5, MySQL 5

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Amministrazione Trasparente

4.1 FAX Sollecito consegne via (Nuova funzione)

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Cimini Simonelli - Testa

INSTALLAZIONE DI JOOMLA! Guida alla installazione di Joomla!

1) GESTIONE DELLE POSTAZIONI REMOTE

INSTALLAZIONE JOOMLA

CONFIGURAZIONE SERVER APACHE (XAMPP): ACCESSO SICURO A DIRECTORY DEL FILE SYSTEM.

MANUALE D USO DELLA PIATTAFORMA ITCMS

Tale attività non è descritta in questa dispensa

Creare un sito Multilingua con Joomla 1.6

Integrazione InfiniteCRM - MailUp

1.0 GUIDA PER L UTENTE

App-V Dynamic Suite Composition

Guida all'installazione del CMS Joomla

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Joomla: Come installarlo e come usarlo. A cura di

Guida all'installazione del CMS Os-Commerce

PRODUZIONE PAGELLE IN FORMATO PDF

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

ImporterONE Export Plugin Magento

ISTRUZIONI XCODE. Autore: Luca Florio (luca.florio<at>polimi.it)

Appunti di Informatica 1

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

PORTALE CLIENTI Manuale utente

Innanzitutto andiamo sul sito ed eseguiamo il download del programma cliccando su Download Dropbox.

Il web server Apache Lezione n. 3. Introduzione

Guida all'installazione del CMS Simple Machine Forum

Non sono supportate reti peer to peer, è necessario avere un server dedicato.

FPf per Windows 3.1. Guida all uso

Progetto di Ingegneria del Software 2. SWIMv2

Fattura Facile. In questo menù sono raggruppati, per tipologia, tutti i comandi che permettono di gestire la manutenzione degli archivi.

Manuale per la configurazione di AziendaSoft in rete

GESGOLF SMS ONLINE. Manuale per l utente

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

ISTRUZIONI AGGIORNAMENTO TARIFFARIO 2006

Punto Print Il programma per stampare. Documentazione Tecnica

Manuale Utente Amministrazione Trasparente GA

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/ fax: 041/

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

SOMMARIO... 3 INTRODUZIONE...

Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara.

ISTRUZIONI PER L INSTALLAZIONE DEL PROGRAMMA PER L INVIO AUTOMATICO DELLE FATTURE VIA

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Istruzioni Archiviazione in Outlook 2007

MODULO STAMPA BOLLETTINO PDF

ISTRUZIONI PER L UTILIZZO DELLA SCHEDA INFORMATIZZATA E MODALITA DI INVIO DEI DATI - L. R. 162/98 PROGRAMMA

GROUP POLICY MANAGEMENT CONSOLE (ACTIVE DIRECTORY)

Schede ADI ADP ADEM Prestazioni aggiuntive MMG. - Manuale - Data Solution Provider s.r.l.

GUIDA UTENTE PRIMA NOTA SEMPLICE

GateManager. 1 Indice. tecnico@gate-manager.it

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

CAPITOLO 1 PREREQUISITI DI INSTALLAZIONE SOFTWARE RICAMBI CAPITOLO 2 PROCEDURA

MANUALE UTENTE Fiscali Free

L archiviazione della posta elettronica può aiutarci a recuperare spazio senza costringerci a cestinare documenti importanti

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Guida Joomla. di: Alessandro Rossi, Flavio Copes

ImporterOne Manuale Export Plugin Prestashop

Gestione delle Cartelle dei Messaggi di Posta Elettronica

Fate doppio click sul file con nome postgresql-8.0.msi e impostate le varie voci come riportato nelle immagini seguenti:

19. LA PROGRAMMAZIONE LATO SERVER

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

FASE 1: Definizione del tema, degli obiettivi e del target con il cliente... (da cui dipendono le scelte successive!)

Creare una versione AIO di Windows 8

Login. Gestione contenuto.

START Easy GO! Il gestionale sempre in tasca! Procedura di aggiornamento. Documentazione utente Pagina 1 di 18

DevC++ vers Manuale d uso

GUIDA UTENTE BILLIARDS COUNTER (Vers )

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Registratori di Cassa

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

SCARICO DATI ONETOUCH Verio per EuroTouch Home GUIDA ALL USO

ISTRUZIONI PER L INSTALLAZIONE DI MINGW

Manuale Utente Albo Pretorio GA

Backup e Aggiornamenti

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Guida Software GestioneSpiaggia.it

Transcript:

JOOMLA & I PROJECT BUILD AUTOMATION by www.isapp.it Luglio 2013 Autori Giampaolo Losito Antonio Di Girolamo 1

SOMMARIO Prefazione... 3 Requisiti... 3 Un Project Build Automation... 3 Glossario dei termini... 4 Creare il build.xml... 4 Il task Project... 6 Porzione di codice: Definizione progetto... 6 Porzione di codice: Task property... 7 Il target main... 8 Porzione di codice: Target main... 8 Il target init... 9 Porzione di codice: Target init... 9 Il target admin... 10 Porzione di codice: Target admin... 11 Il target site... 12 Porzione di codice: Target admin... 12 Il target package... 13 Porzione di codice: Target package... 13 Project Build in esecuzione... 14 Riferimenti On-line... 16 2

PREFAZIONE Dopo aver descritto l utilizzo di un sistema di versionamento per la gestione del codice dei progetti Joomla!, in questa guida affronteremo l argomento dei project-build automation, strumento che serve ad accelerare i tempi di rilascio delle proprie creazioni in Joomla!. I project-build automation permettono di realizzare una quantità elevata di processi automatizzati, dalla chiamata alle UnitTest alla gestione dei dati e delle strutture dati di un DB in modo automatico. In questa guida utilizzeremo il projecg-build automation per la creazione automatica dei pacchetti di installazione delle nostre componenti, moduli o plugin per Joomla!. REQUISITI Per la lettura di questa guida, pertanto, sono necessari alcuni requisiti di base, ossia, un Project Build Automation, una buona conoscenza di XML e una discreta conosceza di PHP in caso si voglia estendere il Project Build che utilizzeremo nel proseguo dell articolo. UN PROJECT BUILD AUTOMATION Un project-build automation è un sistema di deploy che permette di pubblicare i propri progetti in modo pratico e veloce. Grazie a questo, oltre ad abbattere i tempi dei rilasci, permette di diminuire gli errori di eventuali deploy manuali. Esistono molti project-build automation. Tra i più utilizzati e famosi menzioniamo, Apache Ant e Maven scritti in Java e il build-automation Phing, che utilizzeremo per questa guida. Abbiamo scelto Phing (nato dal porting di Apache Ant), perché è un sistema di project-build automation scritto interamente in PHP e quindi molto più vicino al mondo Joomla!. Inoltre molti degli step di deploy sono facilmente realizzabili attraverso la configurazione di un file XML ed eventualmente, altri step possono essere creati ad hoc estendendo Phing con nuove classi scritte anche esse in PHP. In questa guida, non entreremo nel dettaglio della installazione di Phing, questa è ben documentata nella sezione Tips e Tricks del nostro portale e sul sito ufficiale (vedi riferimenti on-line), dove è possibile anche scaricare l ultima versione di Phing. In caso si disponga e si utilizzi per il proprio ambiente di sviluppo XAMPP, quest ultimo supporta già una versione di Phing, presente nella cartella PEAR di PHP. 3

GLOSSARIO DEI TERMINI File di build: File XML contenente i target ed i task di esecuzione della build. Target: Contenitore di un insieme di task. Task: Istruzione(copia, cancella, sposta, crea ) presente in un Target. CREARE IL BUILD.XML Come sempre spiegheremo l utilizzo e funzionamento di questo metodologia di build, con un esempio reale. In questo caso abbiamo preso come esempio la struttura di JPhoto Mobile. Nella parte finale della guida, su come utilizzare un sistema di versionamento per i progetti Joomla!, siamo arrivati all esportazione dei sorgenti in una cartella. A questo punto possiamo intervenire con un sistema di build-project automation per creare il nostro pacchetto di installazione senza dover, ogni volta, impazzire a spostare, copiare ed eliminare file, cartelle o quant altro in modo manuale. Di seguito è riportata la struttura (sono state riportate le sole cartelle per semplificare l immagine) del progetto che abbiamo appena esportato dal nostro trunk e che contiene tutti i file e le cartelle del nostro progetto. 4

Figura 1 A questo punto cominciamo a costruire il nostro file di build. Phing per poter funzionare necessita di un file di build, un semplice file XML, richiamabile da linea di comando. > phing f nomedelbuildfile.xml targeteseguibile In caso non venga specificato il build file, il sistema cercherà il file build.xml che dovrà essere presente nella stesso percorso dove punta il prompt dei comandi. Il secondo parametro è il Target che vogliamo eseguire. Se omesso il sistema recupera quello di default definito nel tag <project>. Apriamo un file vuoto, al di fuori della cartella trunk, e nominiamolo build.xml. 5

Figura 2 Il file di build è un file XML suddiviso in raggruppamenti di comandi (Task) chiamati Target che definiscono il processo di build. IL TASK PROJECT Il seguente task serve alla definione del progetto nel file di build. PORZIONE DI CODICE: DEFINIZIONE PROGETTO <?xml version="1.0" encoding="utf-8"?> <project name="joomphoto Mobile 2.3" default="main"> Nella precedente riga abbiamo definito il nome del progetto e il Target di default (attributo default ), nel nostro caso il Target main, che verrà chiamato per primo, utilizzando il task project nella forma: <project name=" " default=" "> A questo punto si possono definire delle proprietà richiamabili nel file di build. Le proprietà sono delle costanti che possono essere definite in tre modi: Tramite il tag <property> direttamente nel file di build Passandole da linea di comando Utilizzando un file di configurazione esterno (strutturato come un file di properties di Java) Nel nostro esempio abbiamo preferito utilizzare il task property nella forma: <property name= value= > E importante anche fare presente che per richiamare una property in un altro task si utilizza la forma: ${nameproperty} 6

PORZIONE DI CODICE: TASK PROPERTY <property name="packagename" value="com_joomphotomobile_2.3-j25_j3" /> <property name="export" value="./trunk" /> <property name="admindirectory" value="${export}/administrator" /> <property name="admincomponentdir" value="${admindirectory}/components/com_joomphotomobile" /> <property name="sitecomponentdir" value="${export}/components/com_joomphotomobile" /> <property name="builddir" value="./${packagename}" /> <property name="admindir" value="${builddir}/admin" /> <property name="sitedir" value="${builddir}/site" /> Con queste proprietà abbiamo definito: il nome del pacchetto da creare: "packagename" la cartella dove sono presenti i sorgenti esportati: "export". Si può notare che si è utilizzata la definizione del path come./nomedir. Questa notazione definisce che la cartella trunk si trova nella stessa directory del file di build. la cartella di amministrazione dei sorgenti esportati: "admindirectory" la cartella della componente di amministrazione dei sorgenti esportati: "admincomponentdir" la cartella della componente di frontend dei sorgenti esportati: "sitecomponentdir " il nome della cartella che verà creata per il pacchetto di installazione: "builddir" la cartelle dovre dovranno essere installati gli script di amministrazione: "admindir" la cartelle dovre dovranno essere installati gli script di frontend: "sitedir " Si possono definire e utilizzare property a seconda delle esigenze e necessità. Il passo successivo ora è quello di definire i target. Si potrebbe creare un unico target di creazione del pacchetto, ma per una migliore lettura del file di Build si è pensato di separare i Target, così come si sarebbe proceduto con un processo manuale della creazione del pacchetto di installazione. 7

Come già descritto, il primo Target che verrà richiamato è quello definito nel Tag <project> nell attributo default ovvero il Target: main. IL TARGET MAIN Questo target non fa altro che definire le dipendenze, ovvero, definisce la sequenza dei Target che verranno richiamati a partire da sinistra verso destra. Dato che abbiamo separato i nostri target per una migliore manutenzione del file di build, ogni target presenta una possibile dipendenza, ovvero il target non viene eseguito se prima non vengono eseguiti i target da cui dipende. Questa informazione viene data al sistema di build mediante la definizione dell attributo depends. Nel l attributo depends è possibile definire più Target, separati dal carattere di virgola. Il sistema eseguirà questi Target, in modo sequenziale, partendo dal primo elemento, a partire da sinistra, presente nell attributo. Come si legge dalla porzione di file XML sotto riportata, dall attributo depends del target main, il sistema chiamerà in sequenza i seguenti Target: 1. init 2. admin 3. site 4. package Al termine dell ultimo Target, nel nostro caso packages, il sistema eseguirà il Target chiamante, ovvero il Target main. Questo Target non fa altro che avvisarci con un messaggio a video che il pacchetto è stato creato correttamente. Per definire dei messaggi che dovranno essere visualizzati a video si utilizza il task echo nella forma: <echo msg= /> msg: stringa del messaggio PORZIONE DI CODICE: TARGET MAIN <!-- Target: main (DEFAULT) --> <!-- Definisce i target da richiamare in sequenza --> 8

<target name="main" depends="init, admin, site, package"> </target> <echo msg="build Project di JoomPhoto Mobile Terminato con successo" /> IL TARGET INIT Come già descritto, la prima dipendenza del Target main è il target init. Questo Target crea la cartella dove verrà effettuato il deploy di tutti i file per la creazione del pacchetto, ovvero la root del pacchetto di installazione della componente Joomla! (com_joomphotomobile_2.3-j25_j3) e copia in questa cartella i file utilizzati da Joomla! per l installazione: install.joomphotomobile.php joomphotomobile.xml Per la creazione di una nuova directory si è utilizzato il task mkdir nella forma: <mkdir dir=" " /> dir: path della directory da creare Per la copia dei file abbiamo utilizzato il task copy nella forma: <copy file=" " tofile=" " /> file: path (compreso il nome del file) del file da copiare tofile: path (compreso il nome del file) dove copiare il file PORZIONE DI CODICE: TARGET INIT <!-- Target: init --> <!-- Crea la cartella di del package --> <target name="init"> <echo msg="crea directory di BUILD..." /> <mkdir dir="${builddir}" /> 9

</target> <echo msg="copia dei file di installazione nella directory di build..." /> <copy file="${admincomponentdir}/install.joomphotomobile.php" tofile="${builddir}/install.joomphotomobile.php" /> <copy file="${sitecomponentdir}/joomphotomobile.xml" tofile="${builddir}/joomphotomobile.xml" /> IL TARGET ADMIN Questo target costruisce la struttura della cartella admin. Va ricordato che la struttura da creare deve essere conforme al manifest di installazione della propria componente. Nel nostro caso dobbiamo copiare la cartella di amministrazione e quella dove sono presenti i file delle lingue della componente. Per la copia della cartella di amministrazione abbiamo utilizzato il task copy nella forma: <copy todir= > </copy> todir: path della directory dove verranno copiati tutti i file o directory. Se non esiste il sistema la crea Per la copia di tutta la struttura della cartella di amministrazione e delle lingue si è utilizzato il task fileset, all interno del task copy, nella forma: <fileset dir= > </fileset> dir: path della directory da copiare Data la necessità di escludere alcuni file nella copia, all interno del task fileset, si è utilizzato il task exclude nella forma: <exclude name= /> name: path (compreso di nome) del file da escludere dalla copia Mentre per copiare tutti i file e cartelle si è tilizzato il task patternset nella forma: <patternset><include name= ** /></pattern set> 10

name: espressione regolare per la selezione dei file. Se definito ** allora copia tutti i file e cartelle a meno di quelli definiti del task exclude. PORZIONE DI CODICE: TARGET ADMIN <!-- Target: admin --> <!-- Creazione della cartella "Admin" contenente --> <!-- la parte di cartelle e file per il BackEnd --> <target name="admin"> <echo msg="build della parte di amministrazione (administrator)..." /> <echo msg="inizio copia dei file nella directory admin..." /> <copy todir="${admindir}" > </copy> <fileset dir="${admincomponentdir}" > </fileset> <exclude name="install.joomphotomobile.php" /> <patternset> <include name="**"/> </patternset> <copy todir="${admindir}/language" > </copy> <fileset dir="${admindirectory}/language" > </fileset> <patternset> <include name="**"/> </patternset> 11

</target> IL TARGET SITE Questo target come per il target admin costruisce la struttura della cartella site così come descritta nel manifest. Anche per questo target si sono utilizzati gli stessi task descritti nel target admin. PORZIONE DI CODICE: TARGET ADMIN <!-- Target: site --> <!-- Creazione della cartella "Site" contenente la --> <!-- parte di cartelle e file per il FronEnd --> <target name="site"> <echo msg="build della parte di fronend..." /> <echo msg="copia dei file nella directory site..." /> <copy todir="${sitedir}" > </copy> <fileset dir="${sitecomponentdir}" > </fileset> <patternset> <include name="**"/> </patternset> <copy todir="${sitedir}/language" > <fileset dir="${export}/language" > </fileset> <patternset> <include name="**"/> </patternset> 12

</target> </copy> IL TARGET PACKAGE Questo target definisce il processo della creazione del pacchetto di installazione per Joomla!. Per la creazione dell archivio in formato ZIPsi è utilizzato il task zip nella forma: <zip destfile= > </zip> destfile: path (compreso di nome) dell archivio da creare Al termine del processo si potrebbe, come nel nostro caso cancellare la cartella di build per risparmiare spazio. Per questo si è utilizzato il task delete nella forma: <delete dir= /> dir: path della directory da cancellare PORZIONE DI CODICE: TARGET PACKAGE <!-- Target: pacakge --> <!-- Crea il pacchetto di installazione --> <target name=" package" > <echo msg="creazione dell archivio..." /> <zip destfile="./${packagename}.zip"> </zip> <fileset dir="${builddir}"> </fileset> <include name="**/**" /> 13

<echo msg="file copiati e compressi nella build directory..." /> <echo msg="cancella cartella di Build..." /> <delete dir="${builddir}"/> </target> PROJECT BUILD IN ESECUZIONE C:\build-JPM>phing Buildfile: C:\build-JPM\build.xml JoomPhoto Mobile 2.3 > init: [echo] Crea directory di BUILD... Ora accediamo alla shell del sistema operativo e posizioniamoci nella cartella dove è presente il nostro trunk e il file di build appena creato. Richiamiamo Phing. Come già descritto se non definito un file di build, Phing cerca il file build.xml presente nella cartella. Nel nostro caso presente nella cartella build-jpm. Durante il build il sistema visualizza a video gli echo inseiti ed eventuali informazioni stampate a video da parte dei task utilizzati. [mkdir] Created dir: C:\build-JPM\com_joomphotomobile_2.3-j25_j3 [echo] Copia dei file di installazione nella directory di build... [copy] Copying 1 file to C:\build-JPM\com_joomphotomobile_2.3-j25_j3 [copy] Copying 1 file to C:\build-JPM\com_joomphotomobile_2.3-j25_j3 JoomPhoto Mobile 2.3 > admin: [echo] Build della parte di amministrazione (administrator)... [echo] Inizio copia dei file nella directory admin... [copy] Created 13 empty directories in C:\build-JPM\com_joomphotomobile_2.3-j25_j3\admin [copy] Copying 44 files to C:\build-JPM\com_joomphotomobile_2.3-j25_j3\admin [copy] Created 3 empty directories in C:\build-JPM\com_joomphotomobile_2.3-25_j3\admin\language [copy] Copying 4 files to C:\build-JPM\com_joomphotomobile_2.3-j25_j3\admin\language JoomPhoto Mobile 2.3 > site: [echo] Copying files to site directory... [echo] Copia dei file nella directory... 14

[copy] Created 7 empty directories in C:\build-JPM\com_joomphotomobile_2.3-j25_j3\site [copy] Copying 24 files to C:\build-JPM\com_joomphotomobile_2.3-j25_j3\site [copy] Created 3 empty directories in C:\build-JPM\com_joomphotomobile_2.3-j25_j3\site\ language [copy] Copying 2 files to C:\build-JPM\com_joomphotomobile_2.3-j25_j3\site\language JoomPhoto Mobile 2.3 > package: [echo] Creating archive... [zip] Building zip: C:\build-JPM\com_joomphotomobile_2.3-j25_j3.zip [echo] File copiati e compressi nella build directory [delete] Deleting directory C:\build-JPM\com_joomphotomobile_2.3-j25_j3 JoomPhoto Mobile 2.3 > main: [echo] Build Project di JoomPhoto Mobile Terminato con successo BUILD FINISHED Total time: 30.9138 seconds Al termine del processo, nel nostro caso durato solo 30 secondi, troveremo pronto il pacchetto di installazione della nostra componente per Joomla!. A questo punto dopo ogni piccola correttiva, bugfix o evolutiva basterà solo richiamare Phing ed il pacchetto è pronto. 15

RIFERIMENTI ON-LINE http://www.phing.info/ http://www.isapp.it/it/tips-a-tricks/31-php/153-php-phing-installazione.html http://www.isapp.it/documentazione/joomla&subversion.pdf 16