Drone CI est une plateforme d’intégration et de déploiement continu légère, container-native et open source. Elle utilise Docker pour exécuter chaque étape du pipeline dans un conteneur isolé, garantissant 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
:version: '3' 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_ID
etDRONE_GITEA_CLIENT_SECRET
dans les variables d'environnement du servicedrone-server
. - Redémarrez le conteneur.
Déploiement d’un Runner
Ajoutez dans docker-compose.yml
:
drone-agent:
image: drone/agent:2
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-agent
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 propose un pipeline CI/CD simple, évolutif et fiable, idéal pour les environnements Dockerisés.