Drone CI est une plateforme d'intégration et de déploiement continu légère, open source et nativement conçue pour les conteneurs. Elle utilise Docker pour exécuter chaque étape du pipeline dans un conteneur isolé, ce qui garantit reproductibilité et isolation.
Prérequis
- Serveur Linux (Debian/Ubuntu ou CentOS/Rocky)
- Docker & Docker Compose installés
- Domaine ou sous-domaine pointant vers votre instance Drone
Installation de Drone Server
-
Créez un dossier de configuration :
mkdir -p ~/drone && cd ~/drone -
Rédigez le fichier
docker compose.yml:services: drone-server: image: drone/drone:2 ports: - 80:80 volumes: - ./data:/data environment: DRONE_GITEA_SERVER: https://gitea.example.com DRONE_RPC_SECRET: change_this_with_a_long_secret DRONE_SERVER_HOST: drone.example.com DRONE_SERVER_PROTO: https restart: always -
Lancez Drone :
docker compose up -d
Configuration OAuth
- Créez une application OAuth dans votre serveur Git (Gitea/GitHub).
- Ajoutez
DRONE_GITEA_CLIENT_IDetDRONE_GITEA_CLIENT_SECRETdans les variables d'environnement du servicedrone-server. - Redémarrez le conteneur.
Déploiement d'un Runner
Ajoutez dans docker compose.yml :
drone-runner:
image: drone/drone-runner-docker:1
environment:
DRONE_RPC_PROTO: https
DRONE_RPC_HOST: drone.example.com
DRONE_RPC_SECRET: change_this_with_a_long_secret
restart: always
depends_on:
- drone-server
Puis :
docker compose up -d drone-runner
Premier pipeline (fichier .drone.yml)
kind: pipeline
type: docker
name: default
steps:
- name: test
image: node:18
commands:
- npm ci
- npm test
- name: build
image: docker
commands:
- docker build -t example/app:${DRONE_BUILD_NUMBER} .
- docker push example/app:${DRONE_BUILD_NUMBER}
Sécurisation et bonnes pratiques
- Utilisez HTTPS (Let's Encrypt).
- Protégez votre secret RPC.
- Restreignez l'accès aux runners via firewall.
Conclusion
Drone CI livre un pipeline CI/CD simple à opérer et qui passe à l'échelle. Pour des environnements déjà Dockerisés, il s'intègre sans friction.


