
Continue Deployment (continue deployment) is a unique approach in software development that is used for the quick, safe, and effective implementation of various features in software.
The main idea is to create a reliable automated process that allows the developer to quickly deliver a finished product to the user. Constant changes are made to production, which is called the Continuous Delivery Pipeline (CD Pipeline).
Skillbox raadt aan: Praktische cursus .
Ter herinnering: voor alle lezers van «Habr» — een korting van 10.000 roebel bij inschrijving voor elke cursus van Skillbox met de promocode «Habr».

A wide range of tools can be used to manage the flow, including both paid and completely free options. This article describes three of the most popular solutions among developers that can be useful to any programmer.
Jenkins
A fully autonomous automation server with open-source code. It is worth using to automate all types of tasks related to building, testing, delivering, or deploying software.
Minimum requirements for the PC:
- 256 MB RAM, 1 GB storage space.
Optimal:
- 1 GB RAM, 50 GB hard disk space.
You will also need additional software — Java Runtime Environment (JRE) version 8.
The architecture (distributed computing) looks as follows:

Jenkins Server is the installation that is responsible for GUI hosting as well as organizing and executing the entire build.
Jenkins Node/Slave/Build Server are devices that can be configured to perform build work on behalf of the Master.
Installation for Linux
First, you need to add the Jenkins repository to the system:
cd /tmp && wget -q -O — | sudo apt-key add — echo ‘deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Update the package repository:
sudo apt update
Install Jenkins:
sudo apt install jenkins
After that, Jenkins will be available in the system on the default port 8080.
To check the functionality, you need to open the browser to the address :8080. Then the system will prompt you to enter the initial user password with root privileges. This password is located in the file /var/lib/jenkins/secrets/initialAdminPassword.
Now everything is ready to work, you can start creating CI/CD streams. The graphical interface of the working environment looks as follows:


Strengths of Jenkins:
- scalability provided by the Master/Slave architecture;
- availability of REST XML/JSON API;
- de mogelijkheid om een groot aantal extensies te verbinden via plugins;
- een actief en voortdurend groeiend gemeenschapsnetwerk.
Nadelen:
- er is geen analytisch blok;
- de interface is niet bijzonder gebruiksvriendelijk.
TeamCity
Commerciële ontwikkeling van JetBrains. De server is goed in eenvoudige configuratie en heeft een uitstekende interface. In de standaardconfiguratie zijn er veel functies beschikbaar, en het aantal beschikbare plugins blijft toenemen.
Voor gebruik is Java Runtime Environment (JRE) versie 8 vereist.
De serververeisten zijn niet kritisch:
- RAM - 3,2 GB;
- processor - dual-core, 3,2 GHz;
- communicatiekanaal met een bandbreedte van 1 Gb/s.
De server maakt hoge prestaties mogelijk:
- 60 projecten met 300 buildconfiguraties;
- toewijzing van 2 MB voor de buildlog;
- 50 buildagenten;
- mogelijk gebruik door 50 gebruikers in de webversie en 30 gebruikers in de IDE;
- 100 externe SCM-verbindingen, meestal Perforce en Subversion. Gemiddelde wijzigingstijd - 120 seconden;
- meer dan 150 wijzigingen per dag;
- werken met databases op één server;
- serverprocesconfiguratie JVM: -Xmx1100m -XX:MaxPermSize=120m.
De vereisten voor de agent zijn afhankelijk van de actieve builds. De belangrijkste taak van de server is om alle aangesloten agenten bij te houden en builds uit de wachtrij aan deze agenten te verdelen op basis van compatibiliteitsbehoeften, met rapportage van de resultaten. Agenten hebben verschillende platforms en besturingssystemen, plus een vooraf geconfigureerde omgeving.
Alle informatie over de buildresultaten wordt in een database opgeslagen. Dit omvat voornamelijk historische en andere soortgelijke gegevens, VCS-wijzigingen, agenten, buildwachtrijen, gebruikersaccounts en machtigingen. Buildlogs en artefacten worden niet in de database opgenomen.

Installation for Linux
Voor de handmatige installatie van TeamCity met de Tomcat servletcontainer moet het TeamCity-archief worden gebruikt: TeamCity .tar.gz. Downloaden .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Bij de eerste start moet u het type database selecteren waarin de buildgegevens worden opgeslagen.

De standaardconfiguratie werkt op :8111/ met één geregistreerde buildagent die op dezelfde pc is uitgevoerd.
Sterke punten van TeamCity:
- eenvoudige configuratie;
- gebruiksvriendelijke interface;
- een groot aantal ingebouwde functies;
- ondersteuningsdienst;
- er is een RESTful API;
- redelijke documentatie;
- goede beveiliging.
Nadelen:
- beperkte integratie;
- het is een betaald hulpmiddel;
- een kleine gemeenschap (die echter groeit).
GoCD
Een open source-project dat Java Runtime Environment (JRE) versie 8 vereist voor installatie en gebruik.
Systeemvereisten:
- RAM - minimaal 1 GB, bij voorkeur meer;
- processor - een dual-core met een kloksnelheid van 2 GHz;
- harde schijf - minimaal 1 GB vrije ruimte.
Agent:
- RAM - minimaal 128 MB, bij voorkeur meer;
- processor - minimaal 2 GHz.
De server zorgt voor de werking van de agents en biedt een gebruiksvriendelijke interface:

Stages/Jobs/Taken:

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]
Standaard werkt GoCD op :8153.
Krachtige punten van GoCD:
- open source;
- gemakkelijke installatie en configuratie;
- goede documentatie;
- uitstekende gebruikersinterface:

- de mogelijkheid om het pad van de GoCD-implementatie stapsgewijs in één weergave te visualiseren:

- uitstekende weergave van de pijplijnstructuur:

- GoCD optimaliseert de CD-werkstroom in de meest populaire cloudomgevingen, waaronder Docker, AWS;
- de tool biedt de mogelijkheid om fouten in de pijplijn te verhelpen, met realtime tracking van elke wijziging van commit tot implementatie.
Nadelen:
- er is minstens één agent nodig;
- er is geen console voor het weergeven van alle uitgevoerde taken;
- voor het uitvoeren van elke opdracht moet er een taak aan de pijplijnconfiguratie worden toegevoegd;
- voor de installatie van de plug-in moet het .jar-bestand worden verplaatst naar /plugins/external en de server opnieuw worden opgestart;
- relatief kleine gemeenschap.
Als conclusie
Dit zijn slechts drie tools, terwijl er in werkelijkheid veel meer zijn. Het is moeilijk om te kiezen, dus het is absoluut noodzakelijk om aandacht te besteden aan aanvullende aspecten.
De open source van de tool maakt het mogelijk om te begrijpen wat het inhoudt en nieuwe functies sneller toe te voegen. Maar als er iets niet werkt, moet je alleen op jezelf en de hulp van de community vertrouwen. Betaalde tools bieden ondersteuning, wat soms cruciaal kan zijn.
Als veiligheid van het grootste belang is, is het beter om met een lokale tool te werken. Zo niet, dan is de keuze voor een SaaS-oplossing een goede optie.
En tot slot: om een echt effectief proces van continue implementatie te waarborgen, moeten criteria worden opgesteld waarvan de specificiteit de selectie van beschikbare tools kan beperken.
Skillbox raadt aan:
- Praktische tweejarenopleiding .
- Online cursus .
- Praktische jaaropleiding .
Bron: habr.com
