3 outils populaires pour organiser le déploiement continu

3 outils populaires pour organiser le déploiement continu

Le déploiement continu est une approche particulière en développement logiciel, appliquée pour l'implémentation rapide, sécurisée et efficace de diverses fonctionnalités dans les logiciels.

L'idée principale est de créer un processus automatisé fiable, permettant aux développeurs de fournir rapidement un produit fini aux utilisateurs. Cela implique des changements constants en production, ce qu'on appelle un canal de livraison continue (CD Pipeline).

Skillbox recommande : Cours pratique « Développeur mobile PRO ».

Rappelons-le : pour tous les lecteurs de « Habr » — une réduction de 10 000 roubles lors de l'inscription à tout cours Skillbox avec le code promo « Habr ».

3 outils populaires pour organiser le déploiement continu

Pour gérer le flux, un large éventail d'outils peut être utilisé, comprenant à la fois des options payantes et entièrement gratuites. Cet article décrit trois des solutions les plus populaires parmi les développeurs qui peuvent s'avérer utiles à chaque programmeur.

Jenkins

Un serveur d'automatisation totalement autonome avec un code source ouvert. Il est recommandé de l'utiliser pour automatiser tous types de tâches liées à la compilation, aux tests, à la distribution ou au déploiement de logiciels.

Configuration minimale requise :

  • 256 Mo de RAM, 1 Go d'espace disque.

Idéalement :

  • 1 Go de RAM, 50 Go sur le disque dur.

Un logiciel supplémentaire sera également nécessaire : Java Runtime Environment (JRE) version 8.

L'architecture (calcul distribué) se présente comme suit :
3 outils populaires pour organiser le déploiement continu

Serveur Jenkins - installation qui gère l'hébergement de l'interface graphique, ainsi que l'organisation et l'exécution de toute la compilation.

Node/Sem slave Jenkins/Serveur de compilation - dispositifs configurables pour exécuter des tâches de compilation au nom du Maître.

Installation pour Linux

Tout d'abord, il est nécessaire d'ajouter le dépôt 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/je

Mettre à jour le dépôt des paquets :

sudo apt update

Installer Jenkins :

sudo apt install jenkins

Après cela, Jenkins sera accessible dans le système sur le port par défaut 8080.

Pour vérifier le bon fonctionnement, ouvrez dans le navigateur l'adresse localhost:8080. Ensuite, le système demandera d'entrer le mot de passe initial de l'utilisateur avec des droits root. Ce mot de passe se trouve dans le fichier /var/lib/jenkins/secrets/initialAdminPassword.

Maintenant tout est prêt à fonctionner, vous pouvez commencer à créer des flux CI/CD. L'interface graphique de l'environnement de travail se présente comme suit :

3 outils populaires pour organiser le déploiement continu

3 outils populaires pour organiser le déploiement continu

Les atouts de Jenkins :

  • la scalabilité, assurée par l'architecture Maître/Esclave;
  • la présence d'une API REST XML/JSON;
  • possibilité de connecter un grand nombre d'extensions grâce aux plugins;
  • une communauté active et en constante évolution.

Inconvénients :

  • absence de bloc analytique;
  • interface pas très conviviale.

TeamCity

Développement commercial par JetBrains. Le serveur est bon avec une configuration simple et une excellente interface. La configuration par défaut dispose de nombreuses fonctionnalités et le nombre de plugins disponibles augmente constamment.

Un environnement d'exécution Java (JRE) version 8 est nécessaire pour fonctionner.

Les exigences matérielles du serveur ne sont pas critiques :

  • RAM — 3,2 Go;
  • processeur — double cœur, 3,2 GHz;
  • bande passante du canal de 1 Gbit/s.

Le serveur permet d'atteindre une haute performance au travail :

  • 60 projets avec 300 configurations de builds;
  • allocation de 2 Mo pour le journal de construction;
  • 50 agents de build;
  • possibilité de travail avec 50 utilisateurs dans la version web et 30 utilisateurs dans l'IDE;
  • 100 connexions à un VCS externe, généralement Perforce et Subversion. Temps moyen de modifications — 120 secondes;
  • plus de 150 modifications par jour;
  • travail avec une base de données sur un seul serveur;
  • paramètres de processus serveur JVM : -Xmx1100m -XX:MaxPermSize=120m.

Les exigences pour l'agent dépendent des builds en cours. La tâche principale du serveur est de suivre tous les agents connectés et de répartir les builds de la file d'attente entre ces agents en fonction des exigences de compatibilité, tout en rapportant les résultats. Les agents ont différentes plateformes et systèmes d'exploitation, ainsi qu'un environnement préconfiguré.

Toutes les informations sur les résultats des builds sont stockées dans une base de données. Il s'agit principalement de l'historique et d'autres données similaires, des modifications VCS, des agents, des files d'attente de builds, des comptes et des droits d'utilisateur. Seules les journaux de construction et les artefacts ne sont pas inclus dans la base.

3 outils populaires pour organiser le déploiement continu

Installation pour Linux

Pour une installation manuelle de TeamCity avec un conteneur de servlets Tomcat, il faut utiliser l'archive TeamCity : TeamCity .tar.gz. Téléchargez il peut être téléchargé ici.

tar -xfz TeamCity.tar.gz

/bin /runAll. sh [start|stop]

Lors du premier démarrage, il faut choisir le type de base de données où seront stockées les données de build.

3 outils populaires pour organiser le déploiement continu

La configuration par défaut fonctionne sur localhost:8111/ avec un agent de build enregistré exécuté sur le même PC.

Forces de TeamCity :

  • configuration simple;
  • interface conviviale;
  • grand nombre de fonctionnalités intégrées;
  • service de support;
  • disponibilité d'une API RESTful;
  • documentation de bonne qualité;
  • bonne sécurité.

Inconvénients :

  • intégration limitée;
  • c'est un outil payant;
  • une petite communauté (qui, cependant, est en croissance).

GoCD

Un projet open source qui nécessite l'installation et le fonctionnement d'un Java Runtime Environment (JRE) version 8.

Configuration système:

  • RAM — 1 Go minimum, de préférence plus;
  • processeur — double cœur, avec une fréquence d'horloge de 2 GHz;
  • disque dur — minimum 1 Go d'espace libre.

Agent:

  • RAM — minimum 128 Mo, de préférence plus;
  • processeur — minimum 2 GHz.

Le serveur gère le fonctionnement des agents et fournit une interface utilisateur conviviale:

3 outils populaires pour organiser le déploiement continu

Étapes/Jobs/Tâches:

3 outils populaires pour organiser le déploiement continu

Installation pour Linux

echo “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

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]

Par défaut, GoCD fonctionne sur localhost:8153.

Les points forts de GoCD:

  • le code source ouvert ;
  • installation et configuration simples;
  • documentation de qualité;

  • excellente interface utilisateur:

3 outils populaires pour organiser le déploiement continu

  • capacité d'afficher le chemin de déploiement de GoCD étape par étape dans une seule vue:

3 outils populaires pour organiser le déploiement continu

  • superbe visualisation de la structure du pipeline:

3 outils populaires pour organiser le déploiement continu

  • GoCD optimise le flux de travail CD dans les environnements cloud les plus demandés, y compris Docker, AWS;
  • l'outil permet de corriger les pannes dans le pipeline, avec le suivi de chaque changement depuis le commit jusqu'au déploiement en temps réel.

Inconvénients :

  • au moins un agent est nécessaire;
  • pas de console pour afficher toutes les tâches exécutées;
  • pour chaque commande, il faut créer une tâche dans la configuration du pipeline;
  • l'installation d'un plugin nécessite de déplacer le fichier .jar dans /plugins/external et de redémarrer le serveur;
  • une communauté relativement petite.

En conclusion

Ce ne sont que trois outils, il y en a en réalité beaucoup plus. Le choix est difficile, donc il faut faire attention à d'autres aspects.

Le code source ouvert de l'outil permet de comprendre ce qu'il représente, avec l'avantage d'ajouter plus rapidement de nouvelles fonctionnalités. Cependant, si quelque chose ne fonctionne pas, il faut compter uniquement sur soi-même et l'aide de la communauté. Les outils payants offrent un support qui peut parfois être crucial.

Si la sécurité est primordiale, il vaut mieux travailler avec un outil local. Sinon, le choix d'une solution SaaS est une bonne option.

Enfin, pour garantir un processus de déploiement continu réellement efficace, il est nécessaire d'établir des critères dont la spécificité permettra de restreindre le choix des outils disponibles.

Skillbox recommande :

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster