
Le déploiement continu est une approche spéciale dans le développement de logiciels qui est utilisée pour implémenter rapidement, en toute sécurité et efficacement diverses fonctions dans les logiciels.
L'idée principale est de créer un processus automatisé fiable qui permet au développeur de fournir rapidement à l'utilisateur un produit fini. En même temps, des changements constants sont apportés à la production - c'est ce qu'on appelle le pipeline de livraison continue (CD Pipeline).
Skillbox recommande: Cours pratique "Mobile Developer PRO" .
Nous vous rappelons: pour tous les lecteurs de «Habr» - une remise de 10 000 roubles lors de l'inscription à un cours Skillbox en utilisant le code promo «Habr».

Pour contrôler le flux, vous pouvez utiliser une large gamme d'outils, parmi lesquels ils sont à la fois payants et entièrement gratuits. Cet article décrit les trois solutions les plus populaires parmi les développeurs qui peuvent être utiles à tous les programmeurs.
Jenkins
Serveur d'automatisation open source entièrement autonome. Il vaut la peine de travailler avec lui pour automatiser tous les types de tâches liées à l'assemblage, aux tests, à la livraison ou au déploiement de logiciels.
Configuration PC minimale:
- 256 Mo de RAM, 1 Go d'espace fichier.
Optimal:
- 1 Go de RAM, 50 Go d'espace disque dur.
Pour le travail, vous aurez également besoin d'un logiciel supplémentaire - Java Runtime Environment (JRE) version 8.
L'architecture (informatique distribuée) est la suivante:

Jenkins Server - une installation qui est responsable de l'hébergement GUI, ainsi que de l'organisation et de l'exécution de l'assemblage entier.
Jenkins Node / Slave / Build Server - périphériques qui peuvent être configurés pour effectuer des travaux d'assemblage au nom du maître (le nœud principal).
Installation LinuxVous devez d'abord ajouter le référentiel Jenkins au système:
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/jeMettre à jour le référentiel de packages:
mise à jour sudo aptInstallez Jenkins:
sudo apt install jenkinsAprès cela, Jenkins sera disponible sur le système par défaut par le port 8080.
Pour vérifier la fonctionnalité, ouvrez l'adresse
localhost : 8080 dans le navigateur. Ensuite, le système vous demandera d'entrer le mot de passe initial de l'utilisateur avec les droits root. Ce mot de passe se trouve dans le fichier / var / lib / jenkins / secrets / initialAdminPassword.
Maintenant que tout est prêt à fonctionner, vous pouvez commencer à créer des flux CI / CD. L'interface graphique de l'environnement de travail est la suivante:


Points forts de Jenkins:
- l'évolutivité fournie par l'architecture maître / esclave;
- la présence de l'API REST XML / JSON;
- la possibilité de connecter un grand nombre d'extensions grâce aux plugins;
- Une communauté active et en constante évolution.
Inconvénients:
- unité analytique manquante;
- interface pas trop pratique.
Teamcity
Développement commercial de JetBrains. Le serveur est bon pour une configuration simple et une excellente interface. Il existe un grand nombre de fonctions dans la configuration par défaut; le nombre de plugins disponibles est en constante augmentation.
Ce contenu nécessite la version 8 de Java Runtime Environment (JRE).
La configuration requise du serveur pour le matériel n'est pas critique:
- RAM - 3,2 Go;
- processeur - double cœur, 3,2 GHz;
- canal de communication avec une bande passante de 1 Gb / s.
Le serveur vous permet d'atteindre de hautes performances au travail:
- 60 projets avec 300 configurations d'assemblage;
- allocation de 2 Mo au journal d'assemblage;
- 50 agents de construction;
- la possibilité de travailler 50 utilisateurs dans la version web et 30 utilisateurs dans l'IDE;
- 100 connexions SLE externes, généralement Perforce et Subversion. Le temps de changement moyen est de 120 secondes;
- plus de 150 modifications par jour;
- travailler avec la base de données sur un serveur;
- Paramètres de processus du serveur JVM: -Xmx1100m -XX: MaxPermSize = 120m.
Les exigences des agents sont déterminées par l'exécution des assemblys. La tâche principale du serveur est de suivre tous les agents connectés et de répartir les assemblys de la file d'attente entre ces agents en fonction des exigences de compatibilité, avec les résultats rapportés. Les agents disposent de différentes plates-formes et systèmes d'exploitation, ainsi que d'un environnement préconfiguré.
Toutes les informations sur les résultats de l'assemblage sont stockées dans la base de données. Tout d'abord, il s'agit de l'historique et d'autres données similaires, des modifications VCS, des agents, des files d'attente de génération, des comptes et des autorisations utilisateur. La base de données n'inclut pas que les journaux d'assemblage et les artefacts.
Installation LinuxPour installer manuellement TeamCity avec le conteneur de servlet Tomcat, utilisez l'archive TeamCity: TeamCity .tar.gz. Vous pouvez le télécharger
ici .
tar -xfz TeamCity.tar.gz
/ bin / runAll. sh [démarrer | arrêter]
Au premier démarrage, vous devez sélectionner le type de base de données dans lequel les données d'assemblage seront stockées.

La configuration par défaut s'exécute sur
localhost : 8111 / avec un agent de build enregistré exécuté sur le même PC.
Points forts de TeamCity:
- configuration simple;
- interface pratique;
- un grand nombre de fonctions intégrées;
- service d'assistance;
- Il existe une API RESTful;
- bonne documentation;
- bonne sécurité.
Inconvénients:
- intégration limitée;
- c'est un outil payant;
- une petite communauté (qui, cependant, se développe).
Gocd
Un projet open source qui nécessite l'installation et l'exécution de Java Runtime Environment (JRE) version 8.
Configuration requise:
- RAM - 1 Go minimum, mieux encore;
- processeur - double cœur, avec une fréquence de cœur de 2 GHz;
- Disque dur - au moins 1 Go d'espace libre.
Agent:
- RAM - au moins 128 Mo, de préférence plus;
- processeur - au moins 2 GHz.
Le serveur fournit des agents et fournit une interface pratique pour l'utilisateur:

Étapes / Emplois / Tâches:
Installation Linuxecho «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
mise à jour apt-get
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]Par défaut, GoCd s'exécute sur
localhost : 8153.
Points forts du GoCd:
- open source
- installation et configuration simples;
- bonne documentation;
- grande interface utilisateur:

- Possibilité d'affichage pas à pas du chemin de déploiement du GoCD dans une seule vue:

- excellent affichage de la structure du convoyeur:

- GoCD optimise le flux de travail des CD dans les environnements cloud les plus populaires, y compris Docker, AWS;
- l'outil permet de corriger les défauts dans le pipeline, pour lesquels il existe un suivi de chaque changement d'un commit au déploiement en mode temps réel.
Inconvénients:
- au moins un agent est nécessaire;
- il n'y a pas de console pour afficher toutes les tâches terminées;
- Pour exécuter chaque commande, vous devez créer une tâche pour la configuration du pipeline;
- pour installer le plugin, vous devez déplacer le fichier .jar vers <go-server-location> / plugins / external et redémarrer le serveur;
- communauté relativement petite.
En conclusion
Ce ne sont que trois outils, en fait, il y en a beaucoup plus. Il est difficile de choisir, vous devez donc faire attention aux aspects supplémentaires.
Le code open source de l'outil permet de comprendre de quoi il s'agit, en plus d'ajouter de nouvelles fonctions plus rapidement. Mais si quelque chose ne fonctionne pas, vous ne devez compter que sur vous-même et sur l'aide de la communauté. Les outils payants fournissent un support qui peut parfois être critique.
Si la sécurité est la plus importante, vous devez travailler avec un outil local. Sinon, le choix d'une solution SaaS est une bonne option.
Et le dernier: afin d'assurer un processus de déploiement continu réellement efficace, il est nécessaire de formuler des critères dont la spécificité permettra de restreindre l'éventail de choix des outils disponibles.
Skillbox recommande: