Intégration continue avec Magnum CI

update Mise à jour de l’article pour parler du projet de type « Generic ».


L’intégration continue est très bonne pratique à mettre en place sur projet, d’autant plus quand tout est pris en charge par un site tiers, on évite de se tracasser ;)

Pour ceux qui ne voient pas de quoi je parle : je vous laisse vous documenter !

Alors on connait tous Travis CI, mais il ne propose ses services qu’exclusivement pour GitHub. Et c’est très fâcheux, car GitHub n’est pas le seul à proposer d’excellent service d’hébergement de source, il y a aussi Bitbucket !

Il fallait donc trouver une plate-forme d’intégration continue pour Bitbucket et c’est ainsi que j’ai trouvé : Magnum CI qui propose le support de Bitbucket, GitHub et Gitlab.

magnum-ci-1

Mise en place

Instructions à lancer

Le plus simple est de créer un fichier .magnum.yml à la racine de votre repository, pour indiquer les instructions que vous souhaitez lancer. Voici un exemple pour Fresh Symfony avec un projet de type « Generic » :

#before_install:

install:
  # requires PHP5.5 instead of the current version
  - sudo apt-get install --yes --quiet python-software-properties
  - sudo add-apt-repository --yes ppa:ondrej/php5
  # requires PHP with Internationalization extension
  - sudo apt-get update --yes --quiet
  - sudo apt-get install --yes --quiet php5 php5-intl

before_script:
  # explicit Composer configuration for Magnum CI
  - export COMPOSER_CACHE_DIR=.composer-cache/

script:
  - sh phing.sh phpunit.run

#after_script:

Astuces :

  • ligne 03 : comme le projet est de type « Generic » il faut installer PHP, mais cela permet de mieux maitriser les commandes qui seront lancées,
  • ligne 05 : il est facile d’installer de nouveaux paquets avec apt-get,
  • ligne 13 : il faut définir le dossier de cache de Composer dans le dossier courant pour éviter les problèmes de permissions.

Pour plus d’informations sur les instructions, vous pouvez lire la documentation officielle.

Création du projet

Ensuite, il faut créer un nouveau projet sur votre interface en renseignant :

  • votre repository,
  • le type du projet (PHP, Generic, etc.).
magnum-ci-2

Magnum CI – new project

Vous récupérer alors une clé que vous devez ajouter sur Bitbucket dans les paramètres du repository si celui est privé.
Si le repository est publique, vous n’avez rien à faire.

Vous récupérer également une URL du Webhook de Magnum CI à ajouter sur Bitbucket dans les paramètres du repository :

magnum-ci-5

Bitbucket – Webhook

Continuez en paramétrant le build, via Customize Build :

magnum-ci-3

Magnum CI – configuration

Vous n’avez rien d’autre à remplir, le reste de la configuration est déjà implémenté dans fichier .magnum.yml.

Revenez sur le projet et lancer votre premier build, via Test Build :

magnum-ci-4

Magnum CI – build passed

A partir de maintenant, la plate-forme d’intégration continue est autonome et déclenchera les tests unitaires lors d’un évenement push sur votre repository. Vous serez alors prévenu en cas d’erreur sur un build.

Page publique

Vous pouvez choisir d’activer une page publique pour votre projet, via Project Settings: Allow access to public pages, vous aurez alors accès aux informations suivantes :

magnum-ci-6

Magnum CI – public build

Et vous pourrez alors afficher fièrement le status du repository sur Bitbucket avec un fichier README.md :

[![Build Status](https://magnum-ci.com/status/b9d4cccf813ad43c794cbb822e8f2f9c.png?branch=develop)](https://magnum-ci.com/public/6c526f21990a8688e44d/builds)

Exemple pour Fresh Symfony :

magnum-ci-7

Bitbucket – homepage

Une réflexion au sujet de « Intégration continue avec Magnum CI »

  1. Ping : Pourquoi je suis passé à Travis CI | blog@kmelia

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *