
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 .
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'.

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:

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 — | sudo apt-key add — echo ‘deb 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 :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:


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.

Installation for Linux
For manuel installation af TeamCity med servletcontaineren Tomcat skal TeamCity-arkivet bruges: TeamCity .tar.gz. Download .
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.

Standardkonfigurationen kører på :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:

Stages/Jobs/Tasks:

Installation for Linux
echo "deb /” | sudo tee /etc/apt/sources.list.d/gocd.list
curl | 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å :8153.
Styrker ved GoCd:
- åben kildekode;
- nem installation og opsætning;
- god dokumentation;
- fremragende brugergrænseflade:

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

- fremragende visning af pipeline-strukturen:

- 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:
- Toårigt praktisk kursus .
- Online kursus .
- Praktisk års kursus .
Kilde: habr.com
