3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

La distribuzione continua è un approccio speciale nello sviluppo del software che viene utilizzato per implementare in modo rapido, sicuro ed efficiente varie funzioni nel software.

L'idea principale è creare un processo automatizzato affidabile che consenta allo sviluppatore di consegnare rapidamente il prodotto finito all'utente. Allo stesso tempo, vengono apportate modifiche costanti alla produzione, chiamata pipeline di consegna continua (CD Pipeline).

Skillbox consiglia: Corso pratico "Sviluppatore mobile PRO".

Ti ricordiamo: per tutti i lettori di "Habr" - uno sconto di 10 rubli al momento dell'iscrizione a qualsiasi corso Skillbox utilizzando il codice promozionale "Habr".

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

Per controllare il flusso, puoi utilizzare un'ampia gamma di strumenti, inclusi quelli a pagamento e completamente gratuiti. Questo articolo descrive tre delle soluzioni più popolari tra gli sviluppatori che possono essere utili a ogni programmatore.

Jenkins

Server di automazione open source completamente autonomo. Vale la pena collaborare per automatizzare tutti i tipi di attività relative alla creazione, al test, alla spedizione o alla distribuzione del software.

Requisiti minimi del PC:

  • 256 MB di RAM, 1 GB di spazio per i file.

ottimale:

  • 1 GB di RAM, disco rigido da 50 GB.

Per funzionare, avrai bisogno anche di software aggiuntivo: Java Runtime Environment (JRE) versione 8.

L'architettura (calcolo distribuito) si presenta così:
3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

Jenkins Server è un'installazione responsabile dell'hosting della GUI, nonché dell'organizzazione e dell'esecuzione dell'intera build.

Jenkins Node/Slave/Build Server: dispositivi che possono essere configurati per eseguire lavori di compilazione per conto del Master (nodo principale).

Installazione per Linux

Per prima cosa devi aggiungere il repository Jenkins al sistema:

cd /tmp && wget -q -O — pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable binario/' | sudo tee -a /etc/apt/sources.list.d/je

Aggiorna il repository dei pacchetti:

sudo apt update

Installa Jenkins:

sudo apt installa jenkins

Successivamente, Jenkins sarà disponibile nel sistema tramite la porta predefinita 8080.

Per verificare la funzionalità, è necessario aprire l'indirizzo nel browser localhost:8080. Il sistema ti chiederà quindi di inserire la password iniziale per l'utente root. Questa password si trova nel file /var/lib/jenkins/secrets/initialAdminPassword.

Ora che tutto è pronto, puoi iniziare a creare flussi CI/CD. L'interfaccia grafica del workbench è simile alla seguente:

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

Punti di forza di Jenkins:

  • scalabilità fornita dall'architettura Master/Slave;
  • disponibilità di API REST XML/JSON;
  • la possibilità di connettere un gran numero di estensioni grazie ai plugin;
  • comunità attiva e in continua evoluzione.

contro:

  • non esiste un blocco analitico;
  • interfaccia non molto user-friendly.

TeamCity

Sviluppo commerciale da JetBrains. Il server è buono con una configurazione semplice e un'interfaccia eccellente. La configurazione predefinita ha un gran numero di funzioni e il numero di plugin disponibili è in costante aumento.

Richiede Java Runtime Environment (JRE) versione 8.

I requisiti hardware del server non sono critici:

  • RAM - 3,2 GB;
  • processore: dual-core, 3,2 GHz;
  • canale di comunicazione con una capacità di 1 Gb/s.

Il server consente di ottenere prestazioni elevate:

  • 60 progetti con 300 configurazioni di build;
  • Allocazione di 2 MB per il registro di compilazione;
  • 50 agenti di costruzione;
  • la capacità di lavorare con 50 utenti nella versione web e 30 utenti nell'IDE;
  • 100 connessioni di VCS esterni, solitamente Perforce e Subversion. Il tempo medio di cambio è di 120 secondi;
  • più di 150 modifiche al giorno;
  • lavorare con il database su un server;
  • Impostazioni del processo del server JVM: -Xmx1100m -XX:MaxPermSize=120m.

I requisiti dell'agente si basano sugli assembly in esecuzione. Il compito principale del server è monitorare tutti gli agenti connessi e distribuire gli assembly in coda a questi agenti in base ai requisiti di compatibilità, riportando i risultati. Gli agenti sono disponibili in una varietà di piattaforme e sistemi operativi, oltre a un ambiente preconfigurato.

Tutte le informazioni sui risultati della compilazione vengono archiviate nel database. Principalmente si tratta di cronologia e altri dati simili, modifiche VCS, agenti, code di creazione, account utente e autorizzazioni. Il database non include solo log di build e artefatti.

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

Installazione per Linux

Per installare manualmente TeamCity con un contenitore servlet Tomcat, è necessario utilizzare l'archivio TeamCity: TeamCity .tar.gz. Scaricamento puoi ottenerlo da qui.

tar -xfz TeamCity.tar.gz

/bin/runAll. sh [inizio|stop]

Al primo avvio è necessario selezionare il tipo di database in cui verranno archiviati i dati dell'assieme.

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

Viene eseguita la configurazione predefinita localhost:8111/ con un agente di build registrato in esecuzione sullo stesso PC.

I punti di forza di TeamCity:

  • installazione facile;
  • interfaccia user-friendly;
  • un gran numero di funzioni integrate;
  • sostegno;
  • esiste un'API RESTful;
  • buona documentazione;
  • buona sicurezza.

contro:

  • integrazione limitata;
  • Questo è uno strumento a pagamento;
  • una piccola comunità (che però sta crescendo).

Vai CD

Un progetto open source che richiede Java Runtime Environment (JRE) versione 8 per l'installazione e il funzionamento.

Requisiti di sistema:

  • RAM: minimo 1 GB, di più è meglio;
  • processore: dual-core, con una frequenza core di 2 GHz;
  • disco rigido: almeno 1 GB di spazio libero.

agente:

  • RAM: almeno 128 MB, di più è meglio;
  • processore: almeno 2 GHz.

Il server garantisce il funzionamento degli agenti e fornisce un'interfaccia comoda per l'utente:

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

Fasi/Lavori/Attività:

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

Installazione per Linux

echo "deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

arricciare download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key add -
aggiungi-apt-repository ppa:openjdk-r/ppa

apt-get update

apt-get install -y openjdk-8-jre

apt-get installa go-server

apt-get installa go-agent

/etc/init.d/go-server [start|stop|status|restart]

/etc/init.d/go-agent [start|stop|status|restart]

Per impostazione predefinita, GoCd viene eseguito localhost: 8153.

I punti di forza di GoCd:

  • fonte aperta;
  • semplice installazione e configurazione;
  • buona documentazione;

  • Ottima interfaccia utente:

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

  • possibilità di mostrare il percorso di distribuzione GoCD passo dopo passo in un'unica visualizzazione:

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

  • eccellente visualizzazione della struttura della pipeline:

3 strumenti popolari per organizzare la distribuzione continua (Continuous Deployment)

  • GoCD ottimizza il flusso di lavoro CD negli ambienti cloud più diffusi tra cui Docker, AWS;
  • lo strumento consente di correggere i problemi nella pipeline, per i quali viene monitorato ogni cambiamento dal commit alla distribuzione in tempo reale.

contro:

  • è necessario almeno un agente;
  • non esiste una console per visualizzare tutte le attività completate;
  • per eseguire ciascun comando è necessario creare un task per la configurazione della pipeline;
  • Per installare il plugin è necessario spostare il file .jar in /plugins/external e riavviare il server;
  • comunità relativamente piccola.

Come conclusione

Questi sono solo tre strumenti, in realtà ce ne sono molti altri. È difficile scegliere, quindi devi assolutamente prestare attenzione ad aspetti aggiuntivi.

Il codice open source dello strumento consente di capire di cosa si tratta e di aggiungere nuove funzionalità più velocemente. Ma se qualcosa non funziona, allora devi contare solo su te stesso e sull’aiuto della community. Gli strumenti a pagamento forniscono un supporto che a volte può essere fondamentale.

Se la sicurezza è la tua massima priorità, vale la pena lavorare con uno strumento locale. In caso contrario, scegliere una soluzione SaaS è una buona opzione.

Infine, per garantire un processo di distribuzione continua veramente efficace, è necessario formulare criteri le cui specificità consentano di restringere la gamma di strumenti disponibili.

Skillbox consiglia:

Fonte: habr.com

Aggiungi un commento