Impostazione corrente
Al momento disponiamo di un server Jenkins che automatizza le distribuzioni per circa 15 diverse applicazioni Web Java. Ogni applicazione ha tre ambienti di distribuzione su box Linux separati.
- sviluppo
- Prova
- Produzione
In Jenkins ogni applicazione ha la sua "vista". All'interno di ogni vista c'è un lavoro per ogni ramo. Questi lavori semplicemente creano un file di guerra e lo posizionano sul server Jenkins. Quindi, per implementare una persona DevOps, SSH verrà inserito nell'ambiente di distribuzione (sia esso dev, test, prod) per una particolare applicazione ed eseguirà uno script SCP che sposta il file war dal server Jenkins all'ambiente di distribuzione (di solito in una cartella webapps di Tomcat per la distribuzione).
Pubblicazioni
Ovviamente questo è un processo molto sciocco. Voglio avere un processo di distribuzione Jenkins che distribuisca effettivamente l'applicazione (quindi nessuno ha bisogno di SSH in una scatola ed eseguire uno script di shell SCP). Ho ottenuto questo processo di lavoro per alcune delle nostre applicazioni più piccole, ma sto riscontrando due problemi.
- Non conosco il modo migliore per organizzare i miei lavori
- Alcuni colleghi sono preoccupati di quanto sarebbe facile spingere accidentalmente un build di produzione.
Explained further
Sul numero 1 - Un modo ovvio per forzare la forza bruta consisterebbe nel creare un lavoro per ogni ambiente di distribuzione. Tuttavia, in quel caso non so come farlo in modo che il lavoro "Test environment di distribuzione" possa contenere come parametro il ramo che desidero distribuire. Non voglio dover creare tre lavori per ogni nuovo ramo (uno per ogni ambiente di distribuzione). Inoltre, potrei creare un lavoro per ogni ramo, ma poi non so come inviare l'ambiente di distribuzione come parametro? Non voglio dover riconfigurare questi lavori per ogni build, che è l'unico modo che ho trovato fino ad ora.
Sul numero 2 - Esiste un tipo di plug-in o una strategia generalmente utilizzata per la protezione da distribuzioni di produzione nefaste? Mi rendo conto che questa domanda potrebbe essere strongmente basata sulla mia risposta alla domanda n. 1. L'avere un account separato appositamente per la produzione crea un modo efficace per proteggersi da questo?