| Matteo Fontana |
Deploy Applicazioni
Ciao
Ultimamente ho sviluppato un'applicazione composta da più parti che possiamo riassumere per brevità in 5 progetti, ovvero tre librerie di servizi e due GUI WPF. Non ho mai badato troppo a politiche di deploy in quanto inizialmente facendo tutto a mano da Visual Studio la cosa era sostenibile in quanto l'installazione era una sola. Ora mi trovo in una situazione nella quale la stessa applicazione è distribuita in tre diverse installazioni (che a breve diventeranno sei) e tra piattaforme di quality e di produzione gestire il deploy a mano sta diventando davvero tedioso se non addirittura pericoloso! La mia domanda è: Esiste "un modo furbo" per gestire il deploy di applicazioni in modo automatico? Diciamo che per buttarla li "alla utente" il risultato che vorrei ottenere è una pannello di controllo con tanti bottoni quante sono le possibili installazioni; premuto un bottone il sistema mi dovrebbe pubblicare GUI e servizi nei siti giusti, con tutti i vari file di configurazione settati nel modo giusto. Qualche idea almeno per cominciare a muovermi in questo "nuovo mondo"? Ciao e grazie Matteo |
| Roberto Messora |
Re: Deploy Applicazioni
Domanda: potresti spiegare meglio che cosa intendi per deploy?
Da quello che hai scritto suona tanto una questione di diverse versioni distribuite del prodotto, più che un problema di client diversi (hw e sw) su cui installare l'applicazione. Ho inteso bene? Roberto |
| Matteo Fontana |
Re: Deploy Applicazioni
Ciao
Per deploy intendo, per essere terra terra, la pubblicazione dei Servizi su gli appositi siti e la pubblicazione delle varie GUI tramite Click Once su altri appositi siti; ora faccio tutto da visual studio, a mano, ovvero usando la procedura di pubblicazione dei progetti interessati. Questo approccio andava bene fin quando l'installazione era una sola. Ora invece ho la necessità di distribuire la stessa applicazione (la stessa code base per intenderci), magari di versioni diverse, ma comunque la stessa, su più clienti e sto cercando un metodo per farlo in modo furbo, magari automatizzando un po il processo; ora mi devo smazzare le diverse configurazioni a mano e pubblicare le varie componenti a mano sui server giusti (ovvero modificare i file config ed eseguire la procedura di pubblicazione a mane in base al cliente e al tipo di deploy). Spero di essermi spiegato bene... l'italiano non è il mio forte (e nemmeno le procedure di deploy ;) ) |
| Roberto Messora |
Re: Deploy Applicazioni
Ok, quindi se ho capito bene, da una parte hai da deployare su n siti diversi dei servizi (immagino wcf), dall'altra delle applicazioni client.
Ora per suddividere la questione un paio di domande: c'è un motivo particolare per cui i servizi vanno deployati su server diversi? (immagino che le n applicazioni client si connettono allo stssso sito, ma se i servizi mi dici che li metti su server diversi probabilmente c'è qualcosa che mi sfugge). seconda domanda: immagino nuovamente che il vero problema dei deploy delle applicazioni client non sia quello di farle girare (per quello basta il framework installato), ma più che altro che vengono distribuite versioni diverse dello stesso applicativo (ovvero non tutti i client sono allineati all'ultima build). se ho inteso bene ed è questo il problema, il modo di risolverlo è uno solo: usare un software di versionamento del codice (TFS, Subversion, Git, Mercurial...) e creare per ogni build distribuita una tag apposito per tenere traccia degli step di sviluppo che sono sfociati poi in una versione distribuita. in questo modo anche per l'upgrade ad una nuova versione hai la possibilità di aprire in maniera selettiva l'intera solution a quella particolare versione in maniera molto semplice e pulita. Roberto |
| Matteo Fontana |
Re: Deploy Applicazioni
Bene ci avviciniamo al problema :)
Per il versionamento usiamo TFS ed usiamo le etichette per definire le versioni del codice. L'usare siti diversi è dovuto al fatto che andiamo a pubblicare l'applicazione per clienti diversi. Per ora siamo stati abbastanza bravi e quindi riusciamo a "configurare" le personalizzazioni dell'applicazione con il risultato che la code base rimane unica. La necessità che sentiamo ora è quella di automatizzare il processo di configurazione al momento del deploy. Ora, in base al cliente (o più in particolare in base all'ambiente di pubblicazione: quality, produzione etc) dobbiamo intervenire manualmente sulle configurazioni e quindi effettuare il deploy a mano. Per automatizzazione del processo di deploy intendo qualcosa del tipo: Creo una specie di mapping che mi dice: Ambiente di Test - Cliente Pippo Sito Servizi: Indirizzo Sito GUI A: Indirizzo Sito GUI B: Indirizzo File Config Servizi: QualeFile File Config GUI A: QualeFile etc etc Ambiente di Quality - Cliente Pippo etc Date queste informazioni vorrei ottenere un Pannello di Controllo (anche sviluppato internamente) che però riesca ad eseguire il Deploy di tutti i componenti correttamente configurati, in base all'ambiente selezionato. Dici che è troppo contorta come cosa? Oppure mi sto facendo pippe mentali per niente? Grazie per l'interesse a questo problema :) Ciao Matteo |
| Roberto Messora |
Re: Deploy Applicazioni
Ok,
quindi è un problema di configurazione (banalizzando, diversi deploy, diversi valori nelle chiavi del web.config, ho inteso che la cosa è più complessa, ma è giusto per capire). out of the box non c'è nulla che possa automatizzare il lavoro. ci sono diverse strade che però hanno necessità di lavoro aggiuntivo. in generale è possibile sfruttare msbuild creando task di build specifici, va fatto a mano ed è necessario documentarsi su msbuild, però poi questi task possono anche essere lanciati automaticamente da tfs. altrimenti lavorare diversamente e crearsi vere e proprie applicazioni che servano da supporto per la configurazione magari utilizzando anche una sorta di database per l'archiviazione delle configurazioni per i clienti esistenti e per quelli nuovi poi. insomma c'è da lavorarci in maniera custom. |
| Matteo Fontana |
Re: Deploy Applicazioni
Bene grazie mille per ora.
Comincerò a "sbirciare" dentro ad msbuild. Se avrò qualche problema chiederò qui (visto che sei ben disposto a rispondere ne approfitto :) ) Ciao Matteo |