Julien Philippon

Drone pour vos déploiements continus

Le déploiement continu se fait avec un outil, souvent pluggé sur votre repository git, qui s’occupe de tester votre code : en cas d’erreur vous recevrez une alerte, en cas de succès il enchaîne sur le déploiement sur les serveurs de recette ou production.

Si vous utilisez Gitlab, vous avez intérêt à tester et utiliser gitlab-ci qui est intégré dans l’outil, même dans sa version gratuite. Gitlab est un outil puissant qui peut correspondre au besoin de nombreuses équipes de développeurs.

A titre personnel, j’ai pendant un temps utilisé Gitlab pour versionner mes projets et faire du déploiement continue. Avec du recule, j’ai trouvé lourd de gérer un tel outil pour les quelques clients actifs avec qui je travaille. J’ai donc commencé une liste des solutions possibles.

Le premier dont on entend souvent parlé est Jenkins. Il est peut-être très puissant, cependant je n’ai vraiment pas été attiré par son ergonomie. D’autres, avec des versions gratuites sur de l’open source ou de petits usages, comme CircleCi ou Travis CI ne collaient pas car je visais plutôt un outil que je pourrai installer sur mon serveur et l’utiliser comme bon me semble sans coût (mis à par l’hébergement). J’allais partir sur Jenkins lorsque je suis tombé sur Drone.

Drone est un outil de déploiement continu, il ne fait que ça et il le fait bien. Son ergonomie est simple et agréable à utiliser.

Je l’ai pluggé à mon repository Github, activé mes projets et l’outil s’occupe du reste. Il faut bien sûr créer des fichiers .drone.yml qui seront utilisés à chaque push pour lancer des actions.

Il possède de nombreux plugins afin de vous permettre de faire à peu près tout ce que vous voulez.

Il s’installe facilement avec docker. Voici le docker-compose.yml que j’utilise pour le lancer avec docker swarm :

version: '3.7'

services:
  drone:
    image: drone/drone:1
    networks:
      - traefik
      - drone
    env_file:
      - .env
    volumes:
      - $PWD/data:/data
    labels:
      traefik.frontend.rule: 'Host:${URL}'
      traefik.port: 80

  runner:
    image: drone/drone-runner-docker:1
    networks:
      - drone
    env_file:
      - .env
    environment:
      DRONE_RUNNER_CAPACITY: 2
      DRONE_RUNNER_NAME: ${HOSTNAME}
      DRONE_RPC_HOST: drone
      DRONE_RPC_PROTO: http
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

networks:
  drone:
  traefik:
    driver: overlay
    external: true

Vous avez ainsi une instance de Drone, ainsi que deux runners qui s’occuperont des builds.

Je pense que Drone peut être particulièrement adapté pour des freelances qui souhaitent mettre en place un déploiement continue sans prise de tête avec la maintenance d’un outil complet comme Gitlab. Il est agréable à utiliser, facile à prendre en main et possède une documentation complète. J’avoue avoir aussi flashé sur les animations de leur site 😄.

Plus d’informations : https://drone.io