
A folyamatos telepítés (Continuous Deployment) egy különleges megközelítés a szoftverfejlesztésben, amelyet a különféle funkciók gyors, biztonságos és hatékony bevezetésére alkalmaznak a szoftverben.
A fő elképzelés egy megbízható automatizált folyamat létrehozása, amely lehetővé teszi a fejlesztő számára, hogy gyorsan nyújtson kész terméket a felhasználónak. Ehhez folyamatos változtatások történnek a termelési környezetben — ezt folyamatos szállítási csatornának (CD Pipeline) nevezik.
A Skillbox ajánlja: Gyakorlati kurzus .
Emlékeztetjük: minden «Habr» olvasónak 10 000 rubeles kedvezmény jár bármely Skillbox kurzus jelentkezésekor a «Habr» promóciós kód felhasználásával.

A folyamat kezelésére széles eszköztár áll rendelkezésre, beleértve a fizetős és teljesen ingyenes megoldásokat is. Ebben a cikkben három legnépszerűbb megoldást mutatunk be, amelyek hasznosak lehetnek minden programozó számára.
Jenkins
Teljesen autonóm automatizálási szerver nyílt forráskódú. Ezt érdemes használni a szoftverek építésével, tesztelésével, terjesztésével vagy telepítésével kapcsolatos feladatok automatizálására.
Minimális gépigény:
- 256 MB RAM, 1 GB tárolókapacitás.
Optimális:
- 1 GB RAM, 50 GB merevlemezen.
A működéshez szükség van egy Java Runtime Environment (JRE) 8 verzióra is.
Az architektúra (elosztott számítás) a következőképpen néz ki:

A Jenkins Server — az a telepítés, amely a GUI-t hosztolja, valamint megszervezi és végrehajtja az egész építési folyamatot.
A Jenkins Node/Slave/Build Server — olyan eszközök, amelyeket a Master (fő nod) nevében lehet beállítani a munka elvégzésére.
Linux telepítése
Először is hozzá kell adni a Jenkins tárolót a rendszerhez:
cd /tmp && wget -q -O - | sudo apt-key add - echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/jen
Frissítse a csomagok tárolóját:
sudo apt update
Jenkins telepítése:
sudo apt install jenkins
Ezt követően a Jenkins elérhető lesz a rendszerben az alapértelmezett 8080-as porton.
A működés ellenőrzéséhez meg kell nyitni a böngészőben a címet :8080. Ekkor a rendszer megkérdezi a root jogokkal rendelkező felhasználó kezdeti jelszavát. Ez a jelszó a /var/lib/jenkins/secrets/initialAdminPassword fájlban található.
Most már minden készen áll a munkára, elkezdhetjük a CI/CD folyamatok létrehozását. A munkaállomás grafikus felhasználói felülete a következőképpen néz ki:


A Jenkins erősségei:
- skálázhatóság, amelyet a Master/Slave architektúra biztosít;
- REST XML/JSON API elérhetősége.
- a bővítmények révén sok kiegészítő csatlakoztatásának lehetősége;
- aktív és folyamatosan fejlődő közösség.
Hátrányok:
- nincs elemző blokk;
- nem túl kényelmes felhasználói felület.
TeamCity
A JetBrains kereskedelmi fejlesztése. A szerver jó, egyszerű beállítással és kiváló felhasználói felülettel rendelkezik. Az alapértelmezett konfigurációban számos funkció érhető el, és folyamatosan nő a rendelkezésre álló bővítmények száma.
A működéshez Java Runtime Environment (JRE) 8-as verzióra van szükség.
A szerver hardverkövetelményei nem kritikusak:
- RAM – 3,2 GB;
- processzor – kétnúmenes, 3,2 GHz;
- kapcsolati sávszélesség 1 Gb/s.
A szerver lehetővé teszi a magas teljesítmény elérését a munkában:
- 60 projekt 300 build konfigurációval;
- 2 MB dedikált a build naplóhoz;
- 50 build ügynök;
- 50 felhasználó webes verzióban és 30 felhasználó IDE-ben;
- 100 külső VCS csatlakozás, általában Perforce és Subversion. Az átlagos változtatási idő 120 másodperc;
- több mint 150 módosítás naponta;
- adatbázisok kezelése egy serveren;
- JVM szerverfolyamat beállításai: -Xmx1100m -XX:MaxPermSize=120m.
Az ügynök követelményei a futó build-ektől függnek. A szerver fő feladata az összes csatlakoztatott ügynök nyomon követése és a build feladatok elosztása az ügynökök között a kompatibilitási követelmények alapján, az eredmények jelentésével. Az ügynökök különböző platformokon és operációs rendszereken működnek, és előre konfigurált környezettel rendelkeznek.
Az összes build eredmény információ egy adatbázisban tárolódik. Elsősorban a történelem és hasonló adatok, VCS változások, ügynökök, build sorok, felhasználói fiókok és jogosultságok tárolódnak. Az adatbázisba csak a build naplók és artefaktumok nem kerülnek be.

Linux telepítése
A TeamCity manuális telepítése a Tomcat servlet tárolóval a TeamCity archívumot igényli: TeamCity .tar.gz. Letölthető .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Az első indításkor ki kell választani az adatbázis típusát, amelyben a build adatai tárolódnak.

Az alapértelmezett konfiguráció a következő címen működik: :8111/egy regisztrált build ügynökkel, amely ugyanazon a gépen fut.
A TeamCity erősségei:
- egyszerű beállítás;
- kényelmes felhasználói felület;
- számos beépített funkció;
- ügyfélszolgálat;
- van RESTful API;
- elfogadható dokumentáció;
- jó biztonság.
Hátrányok:
- korlátozott integráció;
- ez egy fizetős eszköz;
- egy kis közösség (amely egyébként növekszik).
GoCD
Open source projekt, amely telepítéséhez és működéséhez Java Runtime Environment (JRE) 8-as verzió szükséges.
Rendszerkövetelmények:
- RAM — minimum 1 GB, jobb ha több;
- processzor — kétejderes, 2 GHz-es órajellel;
- merevlemez — minimum 1 GB szabad hely.
Ügynök:
- RAM — minimum 128 MB, jobb ha több;
- processzor — minimum 2 GHz.
A szerver biztosítja az ügynökök működését és felhasználóbarát interfészt nyújt:

Stages/Jobs/Tasks:

Linux telepítése
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]
Alapértelmezés szerint a GoCd a következő címen működik: :8153.
A GoCd erősségei:
- nyílt forráskód;
- egyszerű telepítés és konfigurálás;
- jó dokumentáció;
- kiváló felhasználói felület:

- a GoCD telepítési útvonalának lépésről lépésre történő megjelenítése egy nézetben:

- kiváló pipeline struktúra megjelenítése:

- A GoCD optimalizálja a CD munkafolyamatot a legkeresettebb felhőkörnyezetekben, beleértve a Dockert és az AWS-t;
- az eszköz lehetőséget ad a pipeline hibáinak javítására, amelyhez minden változás követése valós időben történik a commit-tól a telepítésig.
Hátrányok:
- legalább egy ügynök szükséges;
- nincs konzol a végrehajtott feladatok megjelenítésére;
- minden parancs végrehajtásához egy feladatot kell létrehozni a pipeline konfigurációhoz;
- a plugin telepítéséhez a .jar fájlt a /plugins/external mappába kell másolni és újra kell indítani a szervert;
- relatív kis közösség.
Következtetésként
Ez mindössze három eszköz, valójában sokkal több van. Nehéz választani, ezért mindenképpen figyelni kell a kiegészítő szempontokra.
Az eszköz nyílt forráskódja lehetővé teszi megérteni, hogy mit is takar, ráadásul gyorsabban lehet új funkciókat hozzáadni. De ha valami nem működik, csak saját magunkban és a közösség segítségében bízhatunk. A fizetős eszközök támogatást nyújtanak, ami sokszor kritikus fontosságú lehet.
Ha a biztonság a legfontosabb, érdemes helyi eszközzel dolgozni. Ha nem, akkor a SaaS megoldás választása jó lehetőség.
És a végén: ahhoz, hogy valóban hatékony folyamatos telepítési folyamatot biztosítsunk, ki kell alakítani azokat a kritériumokat, amelyek lehetővé teszik a rendelkezésre álló eszközök körének szűkítését.
A Skillbox ajánlja:
- Kétéves gyakorlati tanfolyam .
- Online kurzus .
- Gyakorlati éves kurzus .
Forrás: habr.com
