
Kontinuální nasazení je zvláštní přístup k vývoji softwaru, který se používá k rychlému, bezpečnému a efektivnímu zavádění různých funkcí do softwaru.
Hlavní myšlenkou je vytvoření spolehlivého automatizovaného procesu, který umožňuje vývojáři rychle poskytovat uživateli hotový produkt. Při tom se neustále provádějí změny v produkci, což se nazývá kanál kontinuální dodávky (CD Pipeline).
Skillbox doporučuje: Praktický kurz .
Připomínáme: pro všechny čtenáře "Habra" – sleva 10 000 korun při registraci na jakýkoli kurz Skillbox s promokódem "Habr".

Pro řízení toku lze využít širokou škálu nástrojů, mezi kterými jsou jak placené, tak zcela zdarma. Tento článek popisuje tři nejoblíbenější řešení mezi vývojáři, která mohou být užitečná pro každého programátora.
Jenkins
Úplně autonomní server automatizace s otevřeným zdrojovým kódem. Jeho práce se hodí pro automatizaci všech typů úloh souvisejících s kompilací, testováním, dodáváním nebo nasazováním softwaru.
Minimální požadavky na PC:
- 256 MB RAM, 1 GB úložiště.
Optimálně:
- 1 GB RAM, 50 GB na pevném disku.
Pro práci bude potřeba také další software — Java Runtime Environment (JRE) verze 8.
Architektura (distribuované výpočty) vypadá následovně:

Jenkins Server — instalace, která odpovídá za hosting GUI, stejně jako organizaci a provádění celé kompilace.
Jenkins Node/Slave/Build Server — zařízení, která lze nastavit pro provádění práce na kompilaci jménem Master.
Instalace pro Linux
Nejprve je potřeba přidat repozitář Jenkins do systému:
cd /tmp && wget -q -O - | sudo apt-key add - echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Aktualizujte repozitář balíčků:
sudo apt update
Nainstalujte Jenkins:
sudo apt install jenkins
Po tomto bude Jenkins dostupný v systému na výchozím portu 8080.
Pro ověření funkčnosti je třeba otevřít v prohlížeči adresu :8080. Poté systém nabídne zadání počátečního uživatelského hesla s právy root. Toto heslo se nachází v souboru /var/lib/jenkins/secrets/initialAdminPassword.
Nyní je vše připraveno k práci, můžete přistoupit k vytváření CI/CD toků. Grafické uživatelské rozhraní pracovního prostředí vypadá následovně:


Silné stránky Jenkins:
- škálovatelnost, kterou zajišťuje architektura Master/Slave;
- přítomnost REST XML/JSON API;
- možnost připojení velkého počtu rozšíření díky pluginům;
- aktivní a neustále se vyvíjející komunita.
Nevýhody:
- chybí analytický blok;
- není příliš pohodlné rozhraní.
TeamCity
Komerční vývoj od společnosti JetBrains. Server je dobrý díky jednoduché konfiguraci a vynikajícímu rozhraní. V základní konfiguraci je k dispozici velké množství funkcí, které se neustále rozšiřují dostupnými pluginy.
Pro práci je vyžadováno Java Runtime Environment (JRE) verze 8.
Požadavky serveru na hardware nejsou kritické:
- RAM — 3,2 GB;
- procesor — dvoujádrový, 3,2 GHz;
- komunikační kanál s přenosovou kapacitou 1 Gb/s.
Server umožňuje dosáhnout vysokého výkonu v práci:
- 60 projektů s 300 konfiguracemi sestavení;
- vydělení 2 MB na protokol sestavení;
- 50 agentů sestavení;
- možnost práce 50 uživatelů ve webové verzi a 30 uživatelů v IDE;
- 100 připojení k externí SCM, obvykle Perforce a Subversion. Průměrná doba změn — 120 sekund;
- více než 150 modifikací denně;
- práce s databázemi na jednom serveru;
- nastavení serverového procesu JVM: -Xmx1100m -XX:MaxPermSize=120m.
Požadavky na agenta jsou dány pracovními sestaveními. Hlavním úkolem serveru je sledovat všechny připojené agenty a distribuovat sestavení z fronty těmto agentům na základě požadavků na kompatibilitu, s oznámením výsledků. Agenti mají různé platformy a operační systémy, plus předkonfigurované prostředí.
Veškeré informace o výsledcích sestavení se ukládají do databáze. Především se jedná o historii a podobná data, změny VCS, agenty, fronty sestavení, účty a oprávnění uživatelů. Do databáze nepatří pouze protokoly sestavení a artefakty.

Instalace pro Linux
Pro ruční instalaci TeamCity s kontejnerem servletu Tomcat by se měl použít archiv TeamCity: TeamCity .tar.gz. Stáhnout .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Při prvním spuštění je třeba vybrat typ databáze, ve které budou uložena data o sestavení.

Konfigurace podle defaultu funguje na :8111/ s jedním registrovaným agentem sestavení, spuštěným na stejném PC.
Silné stránky TeamCity:
- jednoduchá konfigurace;
- pohodlné rozhraní;
- velké množství integrovaných funkcí;
- zákaznická podpora;
- existuje RESTful API;
- přijatelná dokumentace;
- dobré zabezpečení.
Nevýhody:
- omezená integrace;
- je to placený nástroj;
- malé, ale rostoucí společenství.
GoCD
Projekt s otevřeným zdrojovým kódem, k jehož instalaci a provozu je potřebné Java Runtime Environment (JRE) verze 8.
Systémové požadavky:
- RAM – alespoň 1 GB, lepší je více;
- procesor – dvoujádrový, s pracovní frekvencí jádra 2 GHz;
- pevný disk – alespoň 1 GB volného místa.
Agent:
- RAM – minimálně 128 MB, lepší je více;
- procesor – alespoň 2 GHz.
Server zajišťuje provoz agentů a poskytuje uživatelské rozhraní:

Stages/Jobs/Tasks:

Instalace pro 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]
Výchozí nastavení GoCD funguje na :8153.
Silné stránky GoCD:
- otevřený zdrojový kód;
- jednoduchá instalace a konfigurace;
- dobrá dokumentace;
- skvělé uživatelské rozhraní:

- možnost krokového zobrazení cesty nasazení GoCD v jednom zobrazení:

- vynikající zobrazení struktury potrubí:

- GoCD optimalizuje pracovní proces CD v nejžádanějších cloudových prostředích, včetně Dockeru, AWS;
- nástroj umožňuje odstraňovat problémy v potrubí, přičemž sleduje každou změnu od commitu po nasazení v reálném čase.
Nevýhody:
- potřebujete alespoň jednoho agenta;
- není k dispoziční konzole pro zobrazení všech provedených úloh;
- pro provádění každého příkazu je třeba vytvořit jednu úlohu k konfiguraci potrubí;
- pro instalaci pluginu je nutné přesunout soubor .jar do /plugins/external a zrestartovat server;
- relativně malé společenství.
Na závěr
To jsou jen tři nástroje, ve skutečnosti jich je mnohem více. Výběr je obtížný, proto je třeba věnovat pozornost i dalším aspektům.
Otevřený zdrojový kód nástroje umožňuje pochopit, co přesně je, a navíc rychleji přidávat nové funkce. Ale pokud něco nefunguje, musíte se spolehnout pouze na sebe a pomoc komunity. Placené nástroje nabízejí podporu, která může být někdy kriticky důležitá.
Pokud je bezpečnost na prvním místě, je lepší používat lokální nástroj. Pokud ne, výběr SaaS řešení je dobrou volbou.
A nakonec: pro zajištění skutečně efektivního procesu kontinuálního nasazení je třeba stanovit kritéria, jejichž specifika umožní zúžit výběr dostupných nástrojů.
Skillbox doporučuje:
- Dvouroční praktický kurz .
- Online kurz .
- Praktický roční kurz .
Zdroj: habr.com
