Deckad logo blanc

Pourquoi Et Comment On A Migré De Gitlab/Jenkins Standalone Vers Bitbucket En Saas

Image Bitbucket

Préambule

Depuis 10 ans, j’ai eu l’habitude d’utiliser Gitlab pour versionner mon code et Jenkins s’occupait de l’intégration continue (package NPM, extension Chrome et surtout des conteneurs Docker).

Maintenir une PIC (plateforme d’intégration continue) demande du temps, des compétences et des ressources serveurs.

Quelles sont les raisons qui nous ont poussées à changer ?

  1. Nous libérer du temps de MCO (Maintien en condition opérationnelle)
  2. Améliorer les performances de notre PIC
  3. Réduire les coûts d’hébergement

Pour résumer :

  • Environ 100 projets git
  • Environ 5 pipelines jenkins
  • Build automatique à chaque push
  • Notification dans Teams après chaque build

Bitbuket en quelques mots:

Solution Saas qui permet :

  • De versionner le code dans un dépôt Git
  • De voir les commits
  • De gérer des branches
  • Des pull-requests
  • De faire de l’intégration continue (avec les pipelines)
  • De faire du déploiement continu (avec les pipelines)

Bitbuket est proposé en version gratuite avec 50 minutes de compilation, ce qui est suffisant pour tester l’outil. Nous l’avons utilisé pour notre migration afin d’évaluer les fonctionnalités, tout s’est très bien exécuté et dans le temps imparti. Bitbuket est aussi disponible en version payante avec plusieurs abonnements en fonction du temps de compilation des pipelines par dépôts.


Une forte contrainte est à souligner : Le fait de devoir compiler dans un conteneur docker. Lorsque l’on utilisait Jenkins, je passais déjà un bon nombre d’heures pour le mettre en place et j’aurais apprécié gagner en temps là-dessus.

La migration des dépôts

Il faut se connecter dans Bitbucket et réaliser un import pour chaque dépôt.

L’adresse pour importer est: https://bitbucket.org/repo/import

Voici à quoi ressemble la fenêtre :

Bitbucket

On a du importer à la main chaque projet, c’est pas si long que ça  🙂

Les pipelines

C’est quoi ? Un pipeline décrit un enchaînement d’actions qui sont réalisées dans des étapes (on peut aussi avoir des cas particuliers en fonction des branches).

Jenkins avait tout de même un gros avantage par rapport à Bitbucker : avoir des pipelines partagés. En effet, un simple fichier de conf par projet permet d’indiquer le pipeline à utiliser.

Ce n’est pas si gênant que ça, on ne modifie pas un pipeline tous les 4 matins. Il faut bien le penser dès le début, et nous, nous avons déjà nos pipelines existants dans Jenkins.

Bitbucket propose une documentation pour aider à la création de pipeline , elle nous a permis de bien appréhender ce mécanisme en moins d’une heure et nous avons réussi haut la main notre première compilation (la description du pipeline se fait au format yaml).

La documentation des pipelines est disponible en anglais : https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/

Il existe un wizard avec des exemples de pipeline :

Bitbucket

Nous avions 2 particularités :

  • Notre propre dépôt NPM avec authentification
  • Notre propos dépôt Docker avec authentification

Il est possible d’avoir des variables communes pour les projets et c’est bien pratique pour éviter de saisir des informations en dur dans nos pipelines (comme les url ou les tokens d’authentification de nos dépôts).

Ce que j’aime beaucoup, c’est qu’en cas d’erreur on peut relancer uniquement à partir de l’étape en erreur.

Imaginons que le pipeline se passe bien mais qu’il est impossible de réaliser le Docker Push à la fin, il est vraiment appréciable de relancer uniquement cette dernière étape et de ne pas avoir à attendre de nouveau la compilation et les tests automatiques.

Il est également possible de lancer des étapes en parallèle.

Notification teams

Bitbucket possède un connecteur payant pour envoyer des notifications dans teams.

Pour plus de liberté, nous avons implémenté notre propre connecteur dans nos pipelines avec un bouton d’action pour ouvrir directement les logs de la compilation (pratique en cas d’erreur).

Bitbucket démo

En conclusion :

Nous avons migré 100 projets git en 1 jour à 2 personnes.

En une journée, on a été capable de créer des pipelines pour :

  • Compiler des packages NPM et les envoyer dans un dépôt NPM
  • Compiler des conteneurs Docker et les envoyer dans un dépôt docker
  • Compiler des extensions chrome et les envoyer dans le Chrome Store
  • Envoyer des notifications dans Teams

 

Ce que nous avons aimé :

  • Un nombre de dépôt git illimité
  • Relancer une étape dans un pipeline

 

Ce que nous avons moins aimé :

  • Impossible de partager les pipelines
  • Le tarif par workspace
Deckad logo blanc

Deckad est une société experte dans le développement de solution numérique pour les entreprises. Retrouvez nous sur les réseaux sociaux

Nos produits

Nous contacter

Adresse

Pépinière CCI de la Drôme
3 rue Georges Charpak
26300 Alixan

Numéro

+33 (0) 7 69 31 52 04