Qual è l’opzione migliore per ottenere “integrazione continua, implementazione continua”?

Una serie minima di requisiti per l’integrazione continua (CI) su un singolo progetto:

  1. Utilizzare un sistema o un servizio di controllo versione moderno e ampiamente utilizzato. Ad esempio Git tramite GitHub o Bitbucket.
  2. Impostare un framework di test automatizzato e scrivere almeno alcuni test di accettazione. Ad esempio, scrivi alcuni scenari di Cucumber per la tua app Web Ruby on Rails.
  3. Scopri cosa serve per eseguire tra la clonazione del tuo repository git e la possibilità di eseguire i test automatizzati. Ad esempio, documentare una serie di comandi da eseguire nella riga di comando o scriverlo in un file di script.
  4. Configurare CI per eseguire automaticamente i test su ogni modifica nel ramo master. Con un servizio come Semaphore puoi farlo in un paio di minuti.
  5. Assicurati che i risultati degli elementi della configurazione siano visibili a tutte le persone che lavorano al progetto. Ad esempio invitandoli ad avere accesso all’app CI e impostando le notifiche e-mail e chat.

La distribuzione continua (CD) ha più requisiti:

  1. Scrivi tutto il nuovo codice nei rami delle caratteristiche di breve durata.
  2. Pratica e applica continuamente lo sviluppo guidato dal comportamento. Garantirà un’alta qualità complessiva della progettazione del codice e fornirà una rete di sicurezza per la cattura di bug nelle prime fasi della CI.
  3. Spingere e testare tutti i rami delle funzionalità in CI.
  4. Dovrebbe essere facile distribuire quel ramo di funzionalità con un comando o fare clic su un server di gestione temporanea. Questo è così sei in grado di assicurarti che la funzionalità funzioni e appaia come previsto.
  5. Avere un processo di revisione del codice nel tuo team. Tutti i rami delle funzionalità dovrebbero finire per essere richieste pull che ricevono una revisione tra pari.
  6. Integra il rapporto sullo stato degli elementi della configurazione nelle tue richieste pull. (Semaphore lo farebbe automaticamente per te.)
  7. Unire una richiesta pull dopo una revisione del codice e passare la build dovrebbe distribuire automaticamente una nuova versione del codice dal ramo master alla produzione. È meglio se il tuo sistema CI può farlo per te e fornire una cronologia condivisa e aggiornamenti a tutto il team.

PS Qualche tempo fa ho scritto un po ‘più in profondità su come si presenta un flusso di lavoro a distribuzione continua.

È una domanda difficile poiché dipende molto dal contesto.

Alcune cose devono essere a posto:

  • Tutto il codice sorgente deve essere controllato in base alla versione.
  • Deve essere possibile costruire il sistema da uno script di compilazione. Il risultato della build deve essere possibile installare da qualche parte senza intervento umano.
  • Costruire periodicamente o in modifica. Preferibilmente entrambi.
  • Installato automaticamente
  • Testato automaticamente
  • Rilascio al pubblico

Per acquisire fiducia nel risultato e quindi acquisire sicurezza nel rilasciarlo agli utenti, è necessario essere in grado di automatizzare il test. Il test in quanto tale è un argomento di grandi dimensioni, ma senza buoni test automatizzati, probabilmente non sarai in grado di raggiungere l’obiettivo di una distribuzione continua. Oppure distribuirai continuamente cose rotte e perderai la fiducia dei tuoi utenti.

Queste sono alcune cose generali che devono essere in atto. Il diavolo è nei dettagli. Stai creando un’applicazione desktop per Windows? Stai creando un’applicazione Web basata su Java? Questi due casi sono molto diversi quando si tratta della catena degli utensili necessaria. L’unico comune denominatore a due denominatori è il sistema di controllo della versione e il server di compilazione. Il sistema di controllo della versione può essere uno qualsiasi di tutti disponibili. Anche il server di integrazione continua può essere lo stesso. Ma da lì le cose iniziano a divergere.

È necessario condividere maggiori dettagli sul prodotto a cui si sta lavorando sotto forma di tecnologia per una risposta più specifica.

Risposta breve: dipende da ciò che è meglio per la tua organizzazione. Queste sono decisioni aziendali piuttosto che decisioni di consegna del software.

Inoltre, l’integrazione continua, la consegna continua (manuale) e la distribuzione continua (automatizzata) sono tutte diverse, quindi scopri questi metodi prima di decidere di adottare qualcosa che non è adatto alle esigenze del tuo team.

Ecco una serie di articoli che aiutano a definire quali passi devono essere presi per determinare la “prontezza” del CD.

Inoltre, ecco una serie di video CD 101 che ne discute in modo più approfondito.

[disclaimer: lavoro a ThoughtWorks]

Puoi provarlo con Travis-CI + Github o anche Gitlab (anche con OSS self-hosted) Integrazione continua GitLab