# Definizione configurazioni progetto Il documento serve a definire come vada configurato il progetto ed il repo git per la gestione dell'intero ciclo CI/CD in modo che si possa compilare un processo di build gtramite Jenkinsfile coerente. - [Definizione configurazioni progetto](#definizione-configurazioni-progetto) - [Scopo del documento](#scopo-del-documento) - [Configurazione GIT branches](#configurazione-git-branches) - [Configurazione Progetto](#configurazione-progetto) - [Configurazione Jenkinsfile](#configurazione-jenkinsfile) ## Scopo del documento L'obiettivo è avere delel build adatte ai seguenti target - Build per testing preliminare su workstation di sviluppo - Build per staging locale (Ufficio) o remoto (cloud remoto) - Build per installer cliente sul "canale stabile" - Build per installer cliente sul "canale beta" Tutto questo per semplificare le fasi di build, delivery, installaizone, configurazione e gestione (ordinaria e epr aggiornamento) dei programmi installati rpesso i vari clienti. ## Configurazione GIT branches Per tutto quanto definito sono necessari al minimo i seguenti branches git: Branch | Impiego ---------|---------- develop | pubblicazione versioni di sviluppo (NON ufficiali) dove fare convergere anche eventuali "mini branch per feature master | versione principale di riferimento ed ufficiale del progetto, viene installata in ambiente test UFFICIO stable | versione di riferimento ed ufficiale del progetto, da cui le installaizoni STABILI per i clienti beta | ramo pubblicazione versione di testing non ufficiale x clienti selezionati o su cui vada provata una versione/funzionalità preliminare ## Configurazione Progetto Il progetto per poter funzionare dovrà avere almeno questo set di configurazioni Configurazione | Impiego ---------|---------- Debug | Configurazione per debug LOCALE su workstation Release | Configurazione per testing SENZA debug LOCALE su workstation o installazione su servers ufficio Prod | Configurazione per INSTALL in produzione (con parametri standard del DB, che COMUNQUE vanno verificati con WinMerge) Le configurazioni speciali dei clienti vanno - se possibile spostate sul DB in tab config - se non possibile (es stringhe di connessione) in files .config esterni (e messi ove possibile in folder gerarchicamente superiori) per non doverle cambiare ad ogni install ## Configurazione Jenkinsfile Nel Jenkinsfile si vanno a d unire le due configurazioni per implementare la logica seguente (definita secondo branch di pubblicazione) Git Branch | Config | impiego ---------|----------|--------- develop | Release | pubblicazione codice, testing compilazione, versione NON ufficiale master | Release | pubblicazione codice, testing compilazione, installazione in ufficio stable | Prod | pubblicazione codice, testing compilazione, produzione installer versione UFFICIALE e STABILE beta | Prod | pubblicazione codice, testing compilazione, produzione installer versione di testing (beta)