3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

Il Deployment Continuo (distribuzione continua) è un approccio particolare nello sviluppo software, utilizzato per implementare rapidamente, in modo sicuro ed efficace, diverse funzionalità nel software.

L'idea principale è creare un processo automatizzato affidabile che consenta agli sviluppatori di fornire rapidamente agli utenti un prodotto finito. In questo processo vengono apportate modifiche costanti in produzione, il che è chiamato pipeline di consegna continua (CD Pipeline).

Skillbox consiglia: Corso pratico «Sviluppatore mobile PRO».

Ricordiamo: per tutti i lettori di «Habr» — sconto di 10.000 rubli per l'iscrizione a qualsiasi corso Skillbox con il codice promozionale «Habr».

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

Per gestire il flusso, è possibile utilizzare una vasta gamma di strumenti, tra cui quelli sia a pagamento che gratuiti. In questo articolo vengono descritti tre delle soluzioni più popolari tra gli sviluppatori che possono essere utili a ogni programmatore.

Jenkins

Un server di automazione completamente autonomo e open source. È consigliato per automatizzare tutti i tipi di attività relative alla compilazione, test, distribuzione o implementazione software.

Requisiti minimi per il PC:

  • 256 MB di RAM, 1 GB di spazio su disco.

Ottimale:

  • 1 GB di RAM, 50 GB di spazio su disco.

Per funzionare, è necessaria anche un'ulteriore software — Java Runtime Environment (JRE) versione 8.

L'architettura (calcolo distribuito) appare come segue:
3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

Jenkins Server — installazione che gestisce l'hosting GUI e organizza ed esegue l'intero processo di compilazione.

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

Installazione per Linux

Per prima cosa, bisogna aggiungere il repository di 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 binary/' | sudo tee -a /etc/apt/sources.list.d/je

Aggiorna il repository dei pacchetti:

sudo apt update

Installare Jenkins:

sudo apt install jenkins

Dopo questo, Jenkins sarà disponibile nel sistema sulla porta predefinita 8080.

Per verificare il funzionamento, è necessario aprire nel browser l'indirizzo localhost:8080. Quindi, il sistema chiederà di inserire la password iniziale dell'utente con diritti di root. Questa password si trova nel file /var/lib/jenkins/secrets/initialAdminPassword.

Ora tutto è pronto per lavorare, si può iniziare a creare pipeline CI/CD. L'interfaccia grafica dell'ambiente di lavoro appare come segue:

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

Punti di forza di Jenkins:

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

Contro:

  • manca un modulo analitico;
  • interfaccia non troppo comoda.

TeamCity

Sviluppo commerciale della JetBrains. Il server è buono grazie a una configurazione semplice e a un'interfaccia eccellente. Nella configurazione predefinita, ci sono molte funzionalità e il numero di plugin disponibili continua a crescere.

Richiede Java Runtime Environment (JRE) versione 8 per il funzionamento.

I requisiti hardware del server non sono critici:

  • RAM — 3,2 GB;
  • processore — dual-core, 3,2 GHz;
  • canale di comunicazione con una larghezza di banda di 1 Gb/s.

Il server consente di raggiungere elevate prestazioni nel lavoro:

  • 60 progetti con 300 configurazioni di build;
  • assegnazione di 2 MB per il log della build;
  • 50 agenti di build;
  • possibilità di lavoro per 50 utenti nella versione web e 30 utenti nell'IDE;
  • 100 connessioni a SCM esterni, in genere Perforce e Subversion. Tempo medio di modifica — 120 secondi;
  • oltre 150 modifiche al giorno;
  • lavoro con database su un singolo server;
  • impostazioni del processo server JVM: -Xmx1100m -XX:MaxPermSize=120m.

I requisiti per l'agente sono determinati dalle build in esecuzione. L'obiettivo principale del server è monitorare tutti gli agenti connessi e distribuire le build dalla coda a questi agenti in base ai requisiti di compatibilità, riportando i risultati. Gli agenti operano su diverse piattaforme e sistemi operativi, oltre a un ambiente preconfigurato.

Tutte le informazioni sui risultati delle build sono memorizzate nel database. In primo luogo, si tratta della cronologia e di altri dati simili, modifiche VCS, agenti, code di build, account e permessi degli utenti. Non sono inclusi nel database solo i log delle build e gli artefatti.

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

Installazione per Linux

Per l'installazione manuale di TeamCity con il contenitore del servlet Tomcat, utilizzare l'archivio TeamCity: TeamCity .tar.gz. Scaricare può essere fatto da qui.

tar -xfz TeamCity.tar.gz

/bin /runAll. sh [start|stop]

Al primo avvio, è necessario scegliere il tipo di database in cui verranno memorizzati i dati delle build.

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

La configurazione di default funziona su localhost:8111/ con un agente di build registrato in esecuzione sullo stesso PC.

Punti di forza di TeamCity:

  • configurazione semplice;
  • interfaccia comoda;
  • un gran numero di funzioni integrate;
  • servizio clienti;
  • è disponibile un'API RESTful;
  • documentazione adeguata;
  • buona protezione.

Contro:

  • integrazione limitata;
  • è uno strumento a pagamento;
  • una piccola comunità (che, tuttavia, sta crescendo).

GoCD

Progetto open source, per l'installazione e il funzionamento del quale è necessaria la Java Runtime Environment (JRE) versione 8.

Requisiti di sistema:

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

Agente:

  • RAM — minimo 128 MB, meglio più;
  • processore — minimo 2 GHz.

Il server gestisce il funzionamento degli agenti e fornisce un'interfaccia utente comoda:

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

Stages/Jobs/Tasks:

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

Installazione per Linux

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

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

apt-get update

apt-get install -y openjdk-8-jre

apt-get install go-server

apt-get install go-agent

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

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

Per impostazione predefinita, GoCd funziona su localhost:8153.

Punti di forza di GoCd:

  • codice sorgente aperto;
  • installazione e configurazione semplici;
  • ottima documentazione;

  • eccellente interfaccia utente:

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

  • possibilità di visualizzare passo-passo il percorso di distribuzione di GoCD in un'unica vista:

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

  • ottima rappresentazione della struttura del pipeline:

3 strumenti popolari per organizzare il deployment continuo (Continuous Deployment)

  • GoCD ottimizza il flusso di lavoro CD nei più richiesti ambienti cloud, tra cui Docker, AWS;
  • lo strumento consente di correggere le malfunzionamenti nel pipeline, offrendo il tracciamento di ogni modifica dal commit alla distribuzione in modalità realtime.

Contro:

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

In conclusione

Questi sono solo tre strumenti, in realtà ce ne sono molti di più. È difficile scegliere, quindi è fondamentale prestare attenzione a ulteriori aspetti.

Il codice sorgente aperto dello strumento consente di comprendere cosa rappresenti, oltre a permettere di aggiungere nuove funzionalità più rapidamente. Tuttavia, se qualcosa non funziona, si è costretti a contare solo su se stessi e sull'assistenza della comunità. Gli strumenti a pagamento offrono supporto, che a volte può risultare critico.

Se la sicurezza è la cosa più importante, è meglio utilizzare uno strumento locale. Se non lo è, allora optare per una soluzione SaaS è una buona opzione.

E infine: per garantire un processo di distribuzione continua realmente efficace, è necessario stabilire criteri la cui specificità permetta di ristrettare il cerchio degli strumenti disponibili.

Skillbox consiglia:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster