Come rendere una build (Java) il più “indipendente dal CM” possibile?(CM=Gestione della configurazione)

StackOverflow https://stackoverflow.com/questions/486668

Domanda

Ho pensato di realizzare uno dei progetti che gestisco, il più "indipendente" da me (CM) possibile.Con questo non intendo solo l'automazione tramite script/strumenti, anche se la include sicuramente.Si tratta di un progetto soggetto a molto caos e quindi l'automazione "totale" non sarebbe realistica.

Ecco a cosa miro:

Chiunque dovrebbe essere in grado di eseguire la compilazione (con un po' di automazione e un po' di documentazione/linee guida), ad esempio un CM principiante o anche uno sviluppatore senza esperienza in CM.

Il mio primo pensiero è raggiungere questo obiettivo:

  1. Perfezionare il processo di richiesta di build (tramite moduli di build che catturano TUTTI i dettagli richiesti per la build in modo che nulla cada nel dimenticatoio solo perché è nella testa di qualcuno)

  2. Semplificando i passaggi della build in modo che possano essere catturati in una semplice documentazione come una sequenza di comandi: una scimmia addestrata dovrebbe essere in grado di eseguire la build (beh...non lanciando insulti ma - hai capito :-))

  3. Utilizzando le funzionalità dello strumento fino in fondo (leggi ANT, SVN) in modo tale che i potenziali problemi vengano rilevati con largo anticipo e contribuiscano anche a fornire avvisi migliori in caso di guasti/problemi.

  4. Avere la libertà di ammalarsi o di prendersi quelle vacanze occasionali senza che il project manager subisca attacchi di panico ogni volta che parlo di un paio di giorni liberi.:-)

Mi farebbe piacere avere qualche pensiero e idea che mi aiuti in questa direzione.Ringrazia tutti!

È stato utile?

Soluzione

A Codice urbano, ci riferiamo a questo come anti-modello "Bob the Builder".La buona notizia è che Bob (tu) vuoi uscire dal giro.Quando il costruttore non può andare in vacanza o ammalarsi senza che alcune parti del processo si interrompano, c'è davvero un problema inaccettabile.Se sono un uomo di scommesse, quando inizi il processo di semplificazione fino ai livelli di "scimmia addestrata", ti chiederai perché passi il tuo tempo a fare queste cose meccaniche quando sei intelligente e potresti effettivamente aggiungere valore da qualche parte.

I sintomi della sindrome di "Bob the Builder" nel nostro libro:

  1. Tutte le richieste di build, o build di un certo tipo, passano attraverso un individuo o un piccolo team.
  2. La risposta a queste richieste di build è fastidiosamente lenta per gli sviluppatori.Se il team di costruzione è a pranzo, aspetta ore.
  3. Bob, o il team di Bob, trascorre una percentuale significativa del proprio tempo svolgendo compiti meccanici.
  4. I Bob che tornano a casa per la giornata, vanno a pranzo, vanno in vacanza o si ammalano ostacolano la capacità della squadra di portare a termine le cose.

Diciamo il ns AnthillPro i clienti a inserire tutto questo genere di cose nella loro automazione.Avere due tipi di build che utilizzano macchine diverse, numeri di build diversi, ecc. non dovrebbe essere un problema.

Il primo passo è semplificare il processo.Elimina quanta più complessità possibile in modo da poter passare al processo della "scimmia addestrata".Una volta che hai qualcosa che si avvicina a questo, sostituire la scimmia con un computer è abbastanza semplice.

Darei consigli più specifici, ma non credo che tu ci abbia detto da dove viene la complessità, oltre al caos.A volte in questa situazione è necessario attaccare le pratiche caotiche e sbagliate.Stai facendo build che sono "questa base nel codice sorgente e quei due file e questi tre file?" Sarebbe complicato e probabilmente avrebbe bisogno di un CMER nel giro.Trova un modo per vietarlo.Sostituirlo con "Crea un ramo e apporta modifiche specifiche a quel ramo" rende la costruzione fattibile da quella scimmia.

Dovresti essere in grado di sostenere che tali cambiamenti siano ad alto rischio.Anche se sei bravo, avrai brutte giornate e vorrai eliminare il più possibile l'errore umano dall'equazione.Allo stesso tempo, se stai cercando una risposta più rapida agli sviluppatori e al self-service (che presumibilmente lo sviluppo e la gestione desiderano), alcune cose dovranno essere rese automatizzabili / scimmiezzabili.

Avere forme migliori può essere utile nel frattempo, e usare bene i tuoi strumenti è sempre positivo, ma attaccherei il problema della "scimmia addestrata" in modo piuttosto aggressivo.Tutto ciò che non può essere fatto da una scimmia addestrata (o da un computer) dovrebbe essere un candidato per abbandonare il processo.Una volta ridotto allo stato di "scimmia addestrata", attiva l'automazione della build in modo che né tu né gli sviluppatori dobbiate essere scimmie.Ciò cambia il tuo ruolo da "Bob the Builder" a "Bob the Build System Owner".

Altri suggerimenti

  

Semplificare la procedura di compilazione in modo che possano essere acquisite in una semplice documentazione di come una sequenza di comandi - una scimmia addestrata dovrebbe essere in grado di funzionare con la build (beh .. insulti non hurling, ma - si ottiene l'idea :-) )

Se questo è possibile, di quello che dovrebbe essere possibile eseguire la configurazione in un passo tramite uno script (mayy che si tratti di una formica, bash, Maven o qualsiasi altra cosa lo script). Questo dovrebbe essere l'obiettivo, in modo sostanzialmente chiunque può fare la build.

L'obiettivo dello sviluppo di un processo di compilazione dovrebbe essere questo:

  1. Inizia con una directory vuota ovunque (tabula rasa, se vuoi)
  2. Assicurati che sia installato uno strumento molto piccolo di strumenti di base (per me di solito è Java + Maven + client della riga di comando SVN)
  3. Dai un'occhiata a separare directory dal tuo SVN/CVS/...
  4. Avvia un singolo comando (e questo significa qualcosa che non ha 25 parametri)
  5. Aspetta (forse un bel po')
  6. Ottieni la tua build completa

Se non puoi farlo, il tuo processo di creazione non è ancora abbastanza buono.

Se ritieni di non poterlo raggiungere, descrivi in ​​dettaglio quali azioni devi eseguire oltre a quelle elencate che non sono possibili con una macchina completa di turing.

Di solito non c'è questo punto.Mancano solo gli strumenti/il know-how/la motivazione.Personalmente ho scoperto che è più facile farlo che descrivere il motivo per cui non può essere fatto.

Buona fortuna.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top