Gitlab CI vs Jenkins

Quelqu'un peut-il me faire savoir quelle est la différence entre Jenkins et D'Autres CI comme Gitlab-CI, drone.io venir avec la distribution GIT. Sur certaines recherches, je n'ai pu que constater que Gitlab community edition ne permet pas L'ajout de Jenkins, mais Gitlab enterprise edition le fait. Est-il d'autres différences significatives.

84
demandé sur Philip Kirkbride 2016-05-25 09:34:38

2 réponses

C'est mon expérience:

Dans mon travail, nous gérons nos dépôts avec gitlab ee et nous avons un serveur Jenkins (1.6) en cours d'exécution.

Dans la base, ils font à peu près la même. Ils exécuteront des scripts sur une image serveur / docker.

TL;DR;

  • Jenkins est plus facile à utiliser/apprendre, mais a le risque de devenir un plugin enfer
  • Jenkins a une interface graphique (cela peut être préféré s'il doit être accessible/maintenable par d'autres personnes)
  • intégration avec GitLab est inférieur à avec Gitlab-ci
  • Jenkins peut être séparé de votre repo

La Plupart des serveurs CI sont assez simple (hall.ci, gitlab-ci, cercle-ci, travis-ci, drone.io, gocd et quoi d'autre avez-vous). Ils vous permettent d'exécuter shell / bat à partir d'une définition de fichier yaml. Jenkins est beaucoup plus enfichable, et est livré avec une interface utilisateur. Cela peut être un avantage ou un inconvénient, selon votre besoin.

Jenkins est très configurable en raison de tous les plugins disponibles. L'inconvénient de ceci est que votre serveur CI peut devenir un spaghetti de plugins.

À mon avis, le chaînage et l'orchestration des tâches dans Jenkins sont beaucoup plus simples (à cause de l'interface utilisateur) que via Yaml (appelant des commandes curl). En outre, Jenkins prend en charge les plugins qui installeront certains binaires lorsqu'ils ne sont pas disponibles sur votre serveur (Je ne sais pas à ce sujet pour les autres).

Aujourd'hui (jenkins2 prend également en charge plus de" ci correct " avec le Jenkinsfile et le plugin pipline qui vient par défaut de Jenkins 2), mais était moins couplé au référentiel que c'est-à-dire gitlab ci.

L'utilisation de fichiers yaml pour définir votre pipeline de construction (et à la fin l'exécution de pure shell/bat) est plus propre.

EDIT: ce que j'ai oublié de mentionner ici est le plugins disponibles pour Jenkins qui vous permettent de visualiser toutes sortes de rapports, telles que les résultats des tests, la couverture et d'autres analyseurs statiques. Bien sûr, vous pouvez toujours écrire ou utiliser un outil pour le faire pour vous, mais c'est certainement un plus pour Jenkins (en particulier pour les gestionnaires qui ont tendance à trop valoriser ces rapports)

EDIT2: dernièrement, je travaille de plus en plus avec Gitlab-ci. Chez Gitlab, ils font un très bon travail pour rendre toute l'expérience amusante. Je comprends que les gens utilisent Jenkins, mais quand Gitlab est en cours d'exécution et disponible, il est vraiment facile de commencer avec Gitlab-ci. Il n'y aura rien qui s'intégrera aussi facilement que Gitlab-ci, même s'ils mettent pas mal d'efforts dans les intégrations 3ème partie.

  • Leur documentation devrait vous aider à démarrer en un rien de temps
  • le seuil pour commencer est très bas
  • la Maintenance est facile (pas de plugins)
  • la mise à l'échelle des coureurs est simple
  • CI fait partie intégrante de votre référentiel
  • Jenkins jobs / vues peut devenir désordonné

Quelques avantages au moment de écriture

  • ne prend en charge qu'un seul fichier, mais cela va bientôt êtrecorrigé
85
répondu Rik 2018-06-27 11:55:32

Je suis d'accord avec la plupart des notes de Rik mais mon opinion sur ce qui est plus simple est le contraire : GitLab s'avère être un outil génial pour travailler avec.

La majeure partie de la puissance provient du fait que est autonome et intègre tout dans le même produit sous le même onglet du navigateur: du navigateur de référentiel, du tableau d'émission ou de l'historique de génération aux outils de déploiement et à la surveillance .

Je l'utilise en ce moment pour automatiser et tester comment une application s'installe sur différentes distributions Linux et c'est juste très rapide à configurer (Essayez d'ouvrir une configuration de travail Jenkins complexe sur firefox et attendez que le script non réactif apparaisse par rapport à la légèreté de l'édition .gitlab-ci.yml). Le temps consacré à la configuration / scalling des esclaves est considérablement moindre grâce aux binaires runner ; plus le fait que dans GitLab.com Vous obtenez des coureurs partagés assez décents et gratuits.

Jenkins se sent plus manuel après quelques semaines d'être un utilisateur puissant de GitLab CI, par exemple dupliquer des tâches par branche, installer des plugins pour faire des choses simples telles que le téléchargement SCP. Le seul cas d'utilisation auquel j'ai fait face où il me manque comme pour aujourd'hui est quand plus d'un référentiel est impliqué; cela doit être bien compris encore.

Btw, j'écris actuellement une série sur GitLab CI pour montrer comment il n'est pas si difficile de configurer votre infrastructure de référentiel ci avec elle. Publié la semaine dernière le premier morceau présentant le notions de base, avantages et inconvénients et différences avec d'autres outils: https://solidgeargroup.com/gitlab_countinuous_integration_intro

37
répondu Alfageme 2017-03-08 13:02:37