3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Continuous Deployment (kontinuerlig implementering) er en særlig tilgang til softwareudvikling, der anvendes til hurtigt, sikkert og effektivt at implementere forskellige funktioner i software.

Hovedideen er at skabe en pålidelig automatiseret proces, der gør det muligt for udvikleren hurtigt at levere et klart produkt til brugeren. Der foretages konstant ændringer i produktionen – dette kaldes en pipeline for kontinuerlig levering (CD Pipeline).

Skillbox anbefaler: Praktisk kursus «Mobil udvikler PRO».

Vi minder om: til alle læsere af 'Habr' — rabat på 10.000 rubler ved tilmelding til et hvilket som helst Skillbox-kursus med rabatkoden 'Habr'.

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Til styring af flowet kan der anvendes en bred vifte af værktøjer, herunder både betalte og helt gratis. Denne artikel beskriver tre af de mest populære løsninger blandt udviklere, som kan være nyttige for enhver programmør.

Jenkins

Et helt autonomt automatiseringsserver med åbent kildekode. Det er værd at arbejde med for at automatisere alle former for opgaver relateret til bygning, testning, levering eller implementering af software.

Minimumskrav til PC:

  • 256 MB RAM, 1 GB plads på disk.

Optimalt:

  • 1 GB RAM, 50 GB på harddisken.

Til arbejdet skal du også bruge ekstra software – Java Runtime Environment (JRE) version 8.

Arkitekturen (distribuerede beregninger) ser således ud:
3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Jenkins Server – installation, der ansvarer for GUI-hosting samt organisering og udførelse af hele bygningen.

Jenkins Node/Slave/Build Server – enheder, der kan konfigureres til at udføre byggearbejdet på vegne af Master (hovednode).

Installation for Linux

Først skal du tilføje Jenkins-repositoriet til systemet:

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

Opdater pakke-repositoriet:

sudo apt update

Installer Jenkins:

sudo apt install jenkins

Derefter vil Jenkins være tilgængelig i systemet på den standard port 8080.

For at kontrollere funktionen skal du åbne adressen i browseren localhost:8080. Systemet vil derefter bede om at indtaste det oprindelige brugerløsenord med root-rettigheder. Dette kodeord findes i filen /var/lib/jenkins/secrets/initialAdminPassword.

Nu er alt klar til brug, og du kan begynde at oprette CI/CD-strømme. Det grafiske brugergrænseflade i arbejdsummet ser således ud:

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Styrker ved Jenkins:

  • skalerbarhed, som sikres af Master/Slave-arkitekturen;
  • tilgængeligheden af REST XML/JSON API;
  • muligheder for tilslutning af mange udvidelser via plugins;
  • et aktivt og konstant voksende fællesskab.

Ulemper:

  • mangler en analytisk blok;
  • ikke den mest brugervenlige grænseflade.

TeamCity

Kommersiel udvikling fra JetBrains. Serveren er nem at konfigurere og har en fremragende grænseflade. Der er mange funktioner i standardkonfigurationen, og antallet af tilgængelige plugins vokser konstant.

Der kræves Java Runtime Environment (JRE) version 8 for at køre.

Serverens hardwarekrav er ikke kritiske:

  • RAM - 3,2 GB;
  • processor - dual-core, 3,2 GHz;
  • netværksforbindelse med en båndbredde på 1 Gbit/s.

Serveren muliggør høj ydeevne:

  • 60 projekter med 300 konfigurationer af builds;
  • tildeling af 2 MB til buildloggen;
  • 50 build-agenter;
  • mulighed for 50 brugere at arbejde i webversionen og 30 brugere i IDE;
  • 100 forbindelser til eksterne VCS, typisk Perforce og Subversion. Gennemsnitlig ændringstid - 120 sekunder;
  • over 150 ændringer om dagen;
  • arbejder med DB på én server;
  • serverprocessens JVM-indstillinger: -Xmx1100m -XX:MaxPermSize=120m.

Kravene til agenten bestemmes af de kørende builds. Serverens primære funktion er at overvåge alle tilsluttede agenter og fordele builds fra køen til disse agenter baseret på kompatibilitetskrav, med rapportering af resultaterne. Agenterne har forskellige platforme og operativsystemer samt en forudkonfigureret miljø.

Al information om buildresultaterne gemmes i databasen. Dette omfatter primært historik og andre lignende data, VCS-ændringer, agenter, buildkøer, brugerregistreringer og tilladelser. Kun buildlogs og artefakter udelades fra databasen.

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Installation for Linux

For manuel installation af TeamCity med servletcontaineren Tomcat skal TeamCity-arkivet bruges: TeamCity .tar.gz. Download kan ske herfra.

tar -xfz TeamCity.tar.gz

/bin /runAll. sh [start|stop]

Ved første start skal der vælges en type database, hvor data om builds vil blive gemt.

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Standardkonfigurationen kører på localhost:8111/ med en registreret build-agent, der kører på samme PC.

Styrker ved TeamCity:

  • nem opsætning;
  • brugervenlig grænseflade;
  • mange indbyggede funktioner;
  • supporttjeneste;
  • der findes et RESTful API;
  • okay dokumentation;
  • god sikkerhed.

Ulemper:

  • begrænset integration;
  • det er et betalt værktøj;
  • et lille fællesskab (som dog vokser).

GoCD

Et open source-projekt, der kræver Java Runtime Environment (JRE) version 8 for installation og drift.

Systemkrav:

  • RAM — mindst 1 GB, helst mere;
  • processor — to kerner, med en kernefrekvens på 2 GHz;
  • harddisk — mindst 1 GB frit plads.

Agent:

  • RAM — minimum 128 MB, helst mere;
  • processor — minimum 2 GHz.

Serveren sikrer drift af agenter og leverer en brugervenlig grænseflade:

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Stages/Jobs/Tasks:

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

Installation for 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]

Som standard kører GoCd på localhost:8153.

Styrker ved GoCd:

  • åben kildekode;
  • nem installation og opsætning;
  • god dokumentation;

  • fremragende brugergrænseflade:

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

  • mulighed for trinvis visning af GoCD's implementeringsforløb i én visning:

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

  • fremragende visning af pipeline-strukturen:

3 populære værktøjer til organisering af kontinuerlig implementering (Continuous Deployment)

  • GoCD optimerer CD-arbejdsflowet i de mest efterspurgte cloud-miljøer, inklusive Docker, AWS;
  • værktøjet giver mulighed for at fejlfinde i pipelinen, med sporing af hver ændring fra commit til implementering i realtid.

Ulemper:

  • mindst én agent er nødvendig;
  • der er ingen konsol til visning af alle udførte opgaver;
  • for hver kommando skal der oprettes en opgave til pipeline-konfigurationen;
  • for at installere en plugin skal .jar-filen flyttes til /plugins/external og serveren genstartes;
  • et relativt lille fællesskab.

Som konklusion

Det er kun tre værktøjer, men der er faktisk mange flere. Det kan være svært at vælge, så man skal være opmærksom på de ekstra aspekter.

Den åbne kildekode af værktøjet giver mulighed for at forstå, hvad det er, plus hurtigere at tilføje nye funktioner. Men hvis noget ikke fungerer, er man nødt til kun at stole på sig selv og støtten fra fællesskabet. Betalede værktøjer tilbyder support, som til tider kan vise sig at være kritisk vigtig.

Hvis sikkerhed er vigtigere end alt andet, bør man arbejde med et lokalt værktøj. Hvis ikke, er valg af SaaS-løsning et godt alternativ.

Og til sidst: for virkelig at sikre en effektiv proces for kontinuerlig implementering, skal der opstilles kriterier, hvis specifikationer gør det muligt at indsnævre udvalget af tilgængelige værktøjer.

Skillbox anbefaler:

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster