Parmi tous les outils CI / CD existants, il y a deux projets qui méritent vraiment d'être pris en compte si vous cherchez quelque chose dans ce domaine. Nous parlons de Jenkins et de l'outil GitLab CI / CD, qui fait partie de la plate-forme GitLab. Jenkins a plus de 16 000 étoiles sur GitHub. Le référentiel GitLab sur gitlab.com compte un peu plus de 2000 étoiles. Si l'on compare la popularité des référentiels, il s'avère que Jenkins a obtenu 8 fois plus d'étoiles que la plateforme, qui inclut GitLab CI / CD. Mais lors du choix d'un outil CI / CD, c'est loin d'être le seul indicateur à prendre en compte. Il y en a des tonnes d'autres, et cela explique pourquoi dans de nombreuses comparaisons Jenkins et GitLab CI / CD sont très proches les uns des autres.
Prenons, par exemple, les données de la plateforme G2, qui accumule les avis sur une grande variété de produits et les notes que les utilisateurs leur attribuent. Ici, Jenkins a une note moyenne de 4,3 étoiles basée sur 288 avis. Et à propos de GitLab, il y a 270 avis, la note moyenne de cet instrument est de 4,4 étoiles. Nous n'aurons pas tort de dire que Jenkins et GitLab CI / CD se font concurrence sur un pied d'égalité. Il est intéressant de noter que le projet Jenkins est apparu en 2011 et qu'il est depuis lors un outil favori des testeurs. Mais dans le même temps, le projet GitLab CI / CD, lancé en 2014, a pris ses positions, très élevées, grâce aux capacités avancées offertes par cette plateforme.
Si nous parlons de la popularité de Jenkins par rapport à d'autres plates-formes similaires, nous notons que nous, après avoir publié un article où les plates-formes Travis CI et Jenkins ont été comparées, avons organisé une enquête. 85 utilisateurs y ont participé. Les répondants ont été invités à choisir l'outil CI / CD qu'ils préfèrent. 79% ont choisi Jenkins, 5% ont choisi Travis CI et 16% ont indiqué préférer d'autres outils.
Résultats du sondage
Parmi les autres outils CI / CD, GitLab CI / CD a été le plus souvent mentionné.
Si vous êtes sérieux au sujet du DevOps, vous devez sélectionner soigneusement les outils appropriés, en tenant compte des spécificités du projet, de son budget et d'autres exigences. Afin de vous aider à faire le bon choix, nous allons analyser Jenkins et GitLab CI / CD. J'espère que cela vous aidera à faire le bon choix.
Présentation de Jenkins
Jenkins est un outil CI / CD flexible bien connu, conçu pour automatiser une variété de tâches liées aux projets logiciels. Jenkins est entièrement écrit en Java et publié sous la licence MIT. Il dispose d'un ensemble puissant de fonctionnalités visant à automatiser les tâches associées à la création, au test, au déploiement, à l'intégration et à la publication de logiciels. Cet outil peut être utilisé sur une variété de systèmes d'exploitation. Il s'agit notamment de macOS, Windows et de nombreuses distributions Linux telles qu'OpenSUSE, Ubuntu et Red Hat. Il existe des packages d'installation Jenkins pour différents OS, cet outil peut être installé sur Docker et sur tout système disposant d'un JRE (Java Runtime Environment).
Les développeurs Jenkins ont créé un autre projet, Jenkins X, conçu pour s'exécuter sur Kubernetes. Jenkins X intègre Helm, le serveur Jenkins CI / CD, Kubernetes et d'autres outils pour créer des pipelines CI / CD qui suivent les meilleures pratiques DevOps. Par exemple, il utilise GitOps ici.
On peut ajouter à la banque des avantages de Jenkins le fait que ses scripts sont très bien structurés, compréhensibles et faciles à lire. L'équipe Jenkins a créé environ 1000 plugins qui visent à organiser l'interaction Jenkins avec une variété de technologies. Dans les scripts, vous pouvez utiliser des systèmes d'authentification, qui, par exemple, vous permettent de vous connecter à divers systèmes fermés.
Pendant que le pipeline Jenkins est en cours d'exécution, vous pouvez observer ce qui se passe à chaque étape, que certaines étapes du travail se soient déroulées avec succès ou non. Vous pouvez observer tout cela, cependant, sans utiliser une certaine interface graphique, mais en utilisant les capacités du terminal.
Fonctionnalités Jenkins
Les fonctionnalités bien connues de Jenkins incluent la facilité de configuration, un haut niveau d'automatisation de diverses opérations et une excellente documentation. Si nous parlons de résoudre des tâches DevOps, alors Jenkins est considéré comme un outil très fiable, à l'aide duquel, en règle générale, il n'a aucun sens de surveiller de près l'ensemble du processus de traitement du projet. Ce n'est pas le cas avec d'autres outils CI / CD. Parlons de certaines des fonctionnalités les plus importantes de Jenkins.
▍1. Support gratuit, open source et multiplateforme
Jenkins peut fonctionner sur les plates-formes macOS, Windows et Linux. Il peut également s'exécuter dans Docker, permettant aux tâches automatisées d'être exécutées de manière cohérente et rapide. Cet outil peut également s'exécuter en tant que servlet dans des conteneurs Java tels qu'Apache Tomcat et GlassFish. L'installation de Jenkins est bien documentée .
▍2. Développement d'un écosystème de plugins
L'écosystème de plugins Jenkins semble beaucoup plus mature que les écosystèmes de plugins d'autres outils CI / CD. Il existe actuellement plus de 1500 plugins Jenkins. Ces plugins visent à résoudre un large éventail de tâches, avec leur aide, vous pouvez automatiser une variété de projets. La richesse des plugins gratuits à choisir signifie que quelqu'un qui utilise Jenkins n'a pas un besoin urgent d'acheter des plugins payants coûteux. Jenkins peut être intégré à de nombreux outils DevOps.
▍3. Installation et configuration faciles
Jenkins est assez facile à installer et à configurer. Dans le même temps, le processus de mise à jour du système est également très pratique. Ici encore, il convient de mentionner la qualité de la documentation, car vous y trouverez des réponses à une variété de questions liées à l'installation et à la configuration de Jenkins.
▍4. Communauté amicale
Comme déjà mentionné, Jenkins est un projet open source, dont l'écosystème comprend un grand nombre de plugins. Une large communauté d'utilisateurs et de développeurs s'est formée autour de Jenkins, aidant à développer le projet. La communauté est l'un des facteurs qui motivent le développement de Jenkins.
▍5. Disponibilité de l'API REST
Tout en travaillant avec Jenkins, vous pouvez utiliser l'API REST, qui étend les capacités du système. L'API pour l'accès à distance au système est présentée en trois versions: XML, JSON avec prise en charge JSONP, Python. Voici la page de documentation qui révèle les détails de l'utilisation de l'API REST Jenkins.
▍6. Prise en charge des tâches parallèles
Jenkins prend en charge la parallélisation des tâches DevOps. Il peut être facilement intégré aux outils associés et être informé de l'avancement des tâches. Le test de votre code peut être accéléré en organisant une construction parallèle du projet à l'aide de différentes machines virtuelles.
▍7. Prise en charge du travail dans des environnements distribués
Jenkins vous permet d'organiser des builds distribués à l'aide de plusieurs ordinateurs. Cette fonctionnalité est applicable dans les grands projets et utilise un schéma de travail, selon lequel il existe un serveur Jenkins principal et plusieurs machines esclaves. Les machines esclaves peuvent également être utilisées dans des situations où vous devez organiser le test d'un projet dans différents environnements. Ces fonctionnalités distinguent Jenkins des autres projets similaires.
Présentation de GitLab
GitLab CI / CD est l'un des outils les plus récents et les plus appréciés des ingénieurs DevOps. Cet outil open source gratuit est intégré au système de contrôle de version de GitLab. La plateforme GitLab a une version communautaire, elle prend en charge la gestion des référentiels, des outils de suivi des problèmes, l'organisation des revues de code, des mécanismes axés sur la création de documentation. Les entreprises peuvent installer GitLab localement, en le reliant aux serveurs Active Directory et LDAP pour une autorisation et une authentification sécurisées des utilisateurs.
Voici un didacticiel vidéo pour vous aider à apprendre à créer des pipelines CI / CD à l'aide des fonctionnalités CI / CD de GitLab.
GitLab CI / CD a été initialement publié en tant que projet autonome, mais en 2015, cette boîte à outils a été intégrée à GitLab 8.0. Un serveur CI / CD GitLab distinct peut prendre en charge plus de 25 000 utilisateurs. Sur la base de ces serveurs, vous pouvez créer des systèmes hautement disponibles.
GitLab CI / CD et le projet principal GitLab sont écrits en Ruby and Go. Ils sont publiés sous la licence MIT. GitLab CI / CD, en plus des capacités habituelles des outils CI / CD, prend en charge des fonctionnalités supplémentaires, telles que la planification du travail.
Il est très facile d'intégrer GitLab CI / CD dans un projet. Lors de l'utilisation de GitLab CI / CD, le processus de traitement du code du projet est divisé en étapes, chacune pouvant comprendre plusieurs tâches exécutées dans un ordre spécifique. Les tâches se prêtent à un réglage fin.
Les tâches peuvent s'exécuter en parallèle. Après avoir configuré la séquence des étapes et des tâches, le pipeline CI / CD est prêt à fonctionner. Sa progression peut être surveillée en surveillant l'état des tâches. En conséquence, l'utilisation de GitLab CI / CD est très pratique, peut-être plus pratique que d'autres outils similaires.
Fonctionnalités de GitLab CI / CD et GitLab
GitLab CI / CD est l'un des outils DevOps les plus populaires. Le projet se distingue par une documentation de haute qualité, ses capacités sont faciles et pratiques à utiliser. Si vous n'êtes pas encore familiarisé avec GitLab CI / CD, la liste suivante des fonctionnalités de cet outil vous donnera une idée générale de ce à quoi vous attendre. Il convient de noter que bon nombre de ces fonctionnalités sont liées à la plate-forme GitLab elle-même, dans laquelle GitLab CI / CD est intégré.
▍1. Popularité
GitLab CI / CD est un outil relativement nouveau qui a été largement utilisé. GitLab CI / CD est progressivement devenu un outil CI / CD extrêmement populaire utilisé pour les tests et le déploiement de logiciels automatisés. C'est facile à personnaliser. C'est également un outil CI / CD gratuit intégré à la plate-forme GitLab.
▍2. Prise en charge des pages GitLab et Jekyll
Jekyll est un générateur de site statique qui peut être utilisé dans le système GitLab Pages pour créer des sites basés sur des référentiels GitLab. Le système prend les matériaux sources et génère un site statique prêt à l'emploi basé sur eux. Vous pouvez contrôler l'aspect et la convivialité de ces sites en éditant le fichier
_config.yml
utilisé par Jekyll.
▍3. Capacités de planification de projet
La possibilité de planifier les jalons du projet facilite le suivi des problèmes et des groupes de problèmes. Cela vous permet de gérer l'organisation du travail sur les projets, de planifier leur mise en œuvre à une date précise.
▍4. Mise à l'échelle automatique des coureurs CI
Grâce à la mise à l'échelle automatique des coureurs chargés d'effectuer des tâches spécifiques, vous pouvez sérieusement économiser sur le coût de location de la capacité du serveur. Ceci est très important, en particulier lorsqu'il s'agit d'environnements où les projets sont testés en parallèle. C'est également important pour les grands projets avec plusieurs référentiels.
▍5. Outils de suivi des problèmes
Les puissantes capacités de suivi des problèmes de GitLab ont conduit à l'utilisation de la plate-forme par de nombreux projets open source. GitLab CI / CD permet de tester en parallèle différentes branches de code. Il est pratique d'analyser les résultats des tests dans l'interface système. Cela distingue GitLab CI / CD de Jenkins.
▍6. Restreindre l'accès aux référentiels
La plate-forme GitLab prend en charge la restriction de l'accès aux référentiels. Par exemple, ceux qui collaborent sur un projet dans un référentiel peuvent se voir attribuer des droits correspondant à leurs rôles. Cela est particulièrement vrai pour les projets d'entreprise.
▍7. Soutien communautaire actif
Une communauté active s'est développée autour de GitLab, qui contribue au développement de cette plateforme et de ses outils, en particulier - GitLab CI / CD. L'intégration profonde de GitLab CI / CD et GitLab, entre autres, facilite la recherche de réponses aux questions qui se posent lorsque vous travaillez avec GitLab CI / CD.
▍8. Prise en charge de l'utilisation de divers systèmes de contrôle de version
GitLab CI / CD est un système qui peut fonctionner non seulement avec le code placé dans les référentiels GitLab. Par exemple, le code peut être stocké dans un référentiel GitHub et un pipeline CI / CD peut être organisé sur GitLab à l'aide de GitLab CI / CD.
Comparaison Jenkins vs GitLab CI / CD
Jenkins et GitLab CI / CD sont de très bons outils, chacun étant capable de faire fonctionner correctement le pipeline CI / CD. Mais, si vous les comparez, il s'avère qu'ils, bien que similaires à bien des égards, diffèrent les uns des autres d'une certaine manière.
Caractéristique | Jenkins | GitLab CI/CD |
. | , — GitLab. | |
. | . | |
. | . | |
— . | . | |
CI/CD- | , Jenkins Pipeline. | . |
. | . | |
1000 . | GitLab. | |
API | API. | API . |
JavaScript | . | . |
(Slack, GitHub). | De nombreux outils d'intégration avec des systèmes tiers, en particulier - avec GitHub et Kubernetes. | |
Contrôle de la qualité du code | Pris en charge - avec le plugin SonarQube et d'autres plugins. | Prise en charge. |
Différences entre Jenkins et GitLab CI / CD
Après avoir décrit et comparé Jenkins et GitLab CI / CD, concentrons-nous sur les différences entre ces outils DevOps. Connaître ces différences aidera à comprendre ceux qui préfèrent l'un de ces outils à l'autre.
- GitLab CI / CD peut contrôler entièrement les référentiels Git. Nous parlons de la gestion des branches du référentiel et de certaines autres fonctionnalités. Mais Jenkins, bien qu'il sache travailler avec les référentiels, ne leur donne pas le même niveau de contrôle que GitLab CI / CD.
- Jenkins est un projet open source gratuit. Celui qui le choisit le déploie indépendamment. Et GitLab CI / CD est inclus dans la plateforme GitLab, c'est une solution toute faite.
- GitLab CI / CD prend en charge la gestion avancée des tâches au niveau du projet. Ce côté de Jenkins est moins développé.
Jenkins et GitLab CI / CD: forces et faiblesses
À présent, vous avez une idée de Jenkins et de GitLab CI / CD. Maintenant, pour vous familiariser encore mieux avec ces outils, examinons leurs forces et leurs faiblesses. Nous supposons que vous avez déjà pris une décision quant à l'outil dont vous avez besoin. Espérons que cette section vous permettra de vous tester.
▍ Points forts de Jenkins
- Un grand nombre de plugins.
- Contrôle total de l'installation de l'outil.
- Débogage facile des coureurs.
- Configuration simple des nœuds.
- Déploiement de code facile.
- Très bon système de gestion des informations d'identification.
- Flexibilité et polyvalence.
- Prise en charge de divers langages de programmation.
- Le système est intuitif.
▍ Faiblesses de Jenkins
- .
- Jenkins , , .
- CI/CD-.
▍ GitLab CI/CD
- Docker.
- .
- , CI/CD-.
- .
- .
- .
- .
- .
▍ GitLab CI/CD
- / .
- .
- CI/CD- .
Jenkins et GitLab CI / CD ont des forces et des faiblesses. La réponse à la question de savoir quoi choisir dépend des besoins et des caractéristiques d'un projet particulier. Chacun des outils CI / CD examinés aujourd'hui diffère par certaines particularités, bien que ces outils aient été créés pour résoudre le même problème. Cela étant dit, Jenkins est un outil autonome, tandis que GitLab CI / CD fait partie d'une plateforme de collaboration de code.
Lors du choix d'un système CI / CD, en plus de ses capacités, il convient de prendre en compte les coûts qui peuvent y être associés et ce avec quoi les ingénieurs DevOps qui soutiennent le projet sont habitués à travailler.
Quels outils CI / CD utilisez-vous?