Close

Strumenti di continuous integration

Gli strumenti che automatizzano le modifiche al codice nei progetti software.

Primo piano di Max Rehkopf
Max Rehkopf

Scrittore collaboratore


La continuous integration (CI) è una best practice Agile e DevOps che consente a più sviluppatori di contribuire e collaborare in una codebase condivisa a un ritmo rapido. Senza la continuous integration, la collaborazione degli sviluppatori sarebbe un noioso processo manuale di coordinamento degli aggiornamenti e dei merge di codice.

Pilastri della continuous integration


La CI si basa sulle best practice per lo sviluppo di software Agile e DevOps, tra cui test automatizzati, controllo delle versioni, automazione delle build e distribuzioni automatiche. Ognuno di questi pilastri della continuous integration ha il suo ecosistema di strumenti e filosofie. I fornitori di strumenti di sviluppo software hanno iniziato a offrire offerte CI-as-a-Service complete che raggruppano questi pilastri in un unico pacchetto olistico. Per comprendere meglio le offerte in bundle, esaminiamo le basi

Gestione delle versioni per il controllo del codice sorgente

Probabilmente il pilastro fondamentale più importante della continuous integration è la gestione delle versioni per il controllo del codice sorgente. Viene utilizzato per comunicare e risolvere i conflitti di modifica tra più sviluppatori che lavorano nella stessa codebase. La gestione delle versioni per il controllo del codice sorgente è disponibile in una varietà di strumenti, i più popolari sono Git e Subversion. I prodotti CI-as-a-Service sono incentrati sul sistema di controllo delle versioni.

Test automatici

I progetti software più seri includono una codebase aggiuntiva, che non è esplicitamente responsabile del prodotto e delle funzioni aziendali. Questa codebase secondaria è una suite di test e funge da set di asserzioni che assicurano che la codebase primaria funzioni correttamente senza bug. Durante lo sviluppo, questi test vengono eseguiti dagli sviluppatori per verificare che il nuovo codice non abbia causato alcuna regressione sulle funzioni esistenti. Questi test case possono essere eseguiti anche con strumenti estranei per automatizzare questo processo di convalida. I prodotti del servizio di CI eseguiranno automaticamente i test case per un progetto su eventi specificati dall'utente. In genere, quando uno sviluppatore esegue il push del codice utilizzando il sistema di controllo delle versioni, un evento attiverà l'esecuzione automatica della suite completa dei test.

Scopri la soluzione

Creare e gestire software con Open DevOps

Logo di Bitbucket
Prodotto discusso

Collaborare, testare e distribuire il codice

Automazione delle build

Le "build" sono gli artefatti creati per generare un'istantanea del rilascio attuale di un progetto software. Le build sono distribuite agli utenti finali attraverso varie reti. In genere, è prevista una serie di passaggi programmati che un progetto seguirà per creare un artefatto di build. Gli strumenti di CI aiutano a semplificare questo processo di compilazione tramite trigger automatici dal sistema di controllo delle versioni. Un esempio di trigger potrebbe essere quando viene eseguito il merge del nuovo codice al branch di produzione della codebase e viene caricata la build su un server remoto affinché gli utenti possano scaricarla.

Distribuzione automatizzata

Quando le build sono pronte per essere distribuite, vengono sottoposte a un processo di distribuzione. Il risultato varia a seconda della distribuzione del progetto. Ad esempio, i progetti web vengono distribuiti su server web accessibili al pubblico. Durante questa distribuzione, l'artefatto generato in fase di compilazione viene copiato sui server web. Il processo di distribuzione per dispositivi mobili e desktop varia e può comportare il caricamento in uno "store", così che gli utenti possano scaricare l'app.

Confronto tra strumenti di continuous integration


1. Bitbucket Pipelines

Riepilogo: Bitbucket Pipelines è uno strumento di CI direttamente integrato in Bitbucket, un sistema di controllo delle versioni cloud offerto da Atlassian. Bitbucket Pipelines è un semplice passaggio successivo per abilitare la CI se il tuo progetto è già su Bitbucket. Le Bitbucket Pipelines sono gestite come codice, pertanto potrai eseguire il commit delle definizioni delle pipeline con facilità e avviare le build. Inoltre, Bitbucket Pipelines offre anche pipeline di CD. Ciò significa che i progetti creati con Bitbucket Pipelines possono essere distribuiti anche sull'infrastruttura di produzione

Funzioni:

  • Installazione e configurazione facili
  • Esperienza Bitbucket unificata
  • Cloud di terze parti

Sito web: https://bitbucket.org/product/features/pipelines

2. Jenkins

Riepilogo: Jenkins è un veterano dello strumento di CI, con una lunga esperienza comprovata. È open source e basato sugli aggiornamenti della community. Jenkins è destinato principalmente a un'installazione locale. Jenkins è un'ottima opzione qualora la tua organizzazione necessitasse di supporto locale per la gestione dei dati sensibili dei clienti, quali i dati di conformità HIPAA.

Funzioni:

  • On-premise
  • Open Source
  • Robusto ecosistema di componenti aggiuntivi/plugin

Sito web: https://jenkins.io/

3. AWS CodePipeline

Riepilogo: Amazon Web Services è uno dei fornitori di infrastrutture cloud più importanti sul mercato. Offre strumenti e servizi per tutti i tipi di attività di sviluppo di infrastrutture e codice. CodePipeline è la sua offerta di CI. CodePipeline può interfacciarsi direttamente con altri strumenti AWS esistenti per fornire un'esperienza AWS senza interruzioni.

Funzioni:

  • Completamente cloud
  • Integrato con Amazon Web Services
  • Supporto per plugin personalizzati
  • Robusto controllo degli accessi

Sito web: https://aws.amazon.com/codepipeline/

4. CircleCI

Riepilogo: CircleCI è uno strumento di CI che si abbina perfettamente a Github, uno dei sistemi di controllo delle versioni più popolari basato su cloud. CircleCi è uno degli strumenti di CI più flessibili, in quanto supporta una matrice di sistemi di controllo delle versioni, sistemi di contenitori e meccanismi di consegna. CircleCi può essere ospitato in locale o utilizzato tramite un'offerta cloud.

Funzioni:

  • Trigger di notifica da eventi di CI
  • Prestazioni ottimizzate per build rapide
  • Debug semplice tramite SSH e build locali
  • Analisi per misurare le prestazioni delle build

Sito web: https://circleci.com/

5. Azure Pipelines

Riepilogo: Azure è la piattaforma dell'infrastruttura cloud di Microsoft, l'equivalente Microsoft di Amazon Web Services. Come il già citato AWS CodePipeline, Azure offre uno strumento di CI completamente integrato nella suite di strumenti di hosting Azure.

Funzioni:

  • Integrazione con la piattaforma Azure
  • Supporto per la piattaforma Windows
  • Supporto per container
  • Integrazione con Github

Sito web: https://azure.microsoft.com

6. GitLab

Riepilogo: Gitlab è un nuovo strumento di CI che offre un'esperienza DevOps completa. Gitlab è stato creato con l'intenzione di migliorare l'esperienza complessiva di Github. Gitlab offre un'esperienza utente moderna con supporto per container.

Funzioni:

  • Hosting locale o cloud
  • Test di sicurezza continui
  • Esperienza utente facile da imparare

Sito web: https://about.gitlab.com

7. Atlassian Bamboo

Riepilogo: un'altra offerta di CI di Atlassian. Considerando che Bitbucket Pipelines è un'opzione esclusivamente ospitata sul cloud, Bamboo offre un'alternativa ospitata autonomamente.

Funzioni:

  • Migliore integrazione con la suite di prodotti Atlassian
  • Un ampio mercato di componenti aggiuntivi e plugin
  • Supporto per container con agenti Docker
  • API di trigger per la funzionalità IFTTT

Sito web: https://www.atlassian.com/software/bamboo

Qual è lo strumento migliore di CI per la tua azienda?


Nell'ambito della scelta dello strumento di CI per il proprio team, è necessario considerare alcuni fattori importanti.

Supporto per il sistema di controllo delle versioni

La colonna portante di un sistema CI/CD è il supporto e l'integrazione del sistema di controllo delle versioni sottostante (VCS, Version Control System). I VCS più popolari sono Git, Subversion, Mercurial e Perforce. Gli strumenti cloud di CI possono offrire supporto per alcuni o tutti questi VCS. È fondamentale scegliere uno strumento di CI che offra supporto per i tuoi progetti VCS.

Locale vs. cloud

Alcuni degli strumenti di CI indicati in precedenza, come Jenkins, possono essere installati in locale. Ciò significa che il tuo team è responsabile della configurazione e della gestione del sistema di CI sulla tua infrastruttura. Questo può essere utile per motivi di privacy e sicurezza. Ad esempio, in caso di problemi di privacy dei dati dei clienti nell'ambito della soddisfazione degli standard di conformità, una soluzione locale potrebbe essere un requisito. Inoltre, le istanze locali possono offrire opzioni di personalizzazione e configurazione più approfondite.

Le soluzioni cloud possono comportare lavoro extra non in linea con le tue esigenze di business principali. Le opzioni cloud esternalizzano la gestione degli strumenti di CI a un fornitore di terze parti. La società di hosting cloud gestisce quindi i tempi di attività, il supporto e la scalabilità degli strumenti di CI, consentendo al tuo team di concentrarsi sulle esigenze di business principali. Questo può rappresentare un enorme vantaggio per i team con un budget limitato o le aziende più piccole, che necessitano di concentrarsi appieno sugli obiettivi di adattamento al mercato dei prodotti.

Supporto per container

La containerizzazione è una tendenza moderna dello sviluppo del software. La containerizzazione consente la distribuzione di una copia isolata, immutabile e ripetibile di un'applicazione. La containerizzazione è abilitata da strumenti come Docker e Kubernetes. I moderni strumenti di CI offriranno supporto per l'integrazione dei contenitori nel processo di CI/CD. I contenitori risolvono il problema "funziona sul mio computer", garantendo che il codice dell'applicazione sia contenuto in un'istantanea bloccata delle dipendenze a livello di sistema e che il codice del team eseguito sullo strumento di CI sia una replica dell'ambiente locale. Questo elimina un'intera classe di problemi di parità ambientale che si presentano senza contenitori.

Plugin e integrazioni di terze parti

Gli strumenti di CI diventano ancora più utili se integrati con il resto del tuo stack tecnologico. Le analisi sull'efficienza e sulle prestazioni del team di progettazione possono essere raccolte dagli strumenti di CI. Le applicazioni di pianificazione degli sprint possono essere collegate agli strumenti di CI per aggiornare automaticamente lo stato dello sprint quando il codice è stato distribuito. Queste integrazioni possono essere utilizzate per guidare i KPI e le tabelle di marcia del team di progettazione.

Introduzione alla CI


Uno strumento di CI moderno è un requisito fondamentale per abilitare un team di progettazione ad alte prestazioni. I team di progettazione possono ottimizzare la loro velocità di comunicazione e consegna utilizzando uno strumento di CI. Il mercato offre molte soluzioni di strumenti di CI. I concetti fondamentali da considerare nell'ambito di una scelta di uno strumento di CI sono il supporto del sistema di controllo delle versioni, l'hosting on-premise o cloud, le pipeline di distribuzione e le integrazioni di applicazioni esterne.

Leggi le nostre guide

Sono disponibili alcune guide e tutorial più approfonditi per iniziare a implementare queste pratiche.

Max Rehkopf
Max Rehkopf

Da disorganizzato quale sono, sfrutto le pratiche Agile e i principi Lean per portare ordine nel mio quotidiano. Per me è un piacere condividere queste best practice con altre persone attraverso i tanti articoli, le conferenze e i video che realizzo per Atlassian 


Condividi l'articolo
Argomento successivo

Letture consigliate

Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.

Illustrazione su Devops

Community DevOps

Illustrazione su Devops

Leggi il blog

Illustrazione di una mappa

Inizia gratis

Iscriviti alla nostra newsletter DevOps

Thank you for signing up

Prossimo contenuto
Sviluppo basato su trunk