Un Build Server est un serveur dédié ou une machine virtuelle qui compile automatiquement le code source, exécute des tests et crée des artefacts prêts au déploiement. Il sert de nœud central de l’infrastructure CI/CD et prend en charge les tâches de compilation, libérant ainsi les machines locales des développeurs. Selon le GitLab Global DevSecOps Report, 2025, 67% des équipes utilisent des serveurs de compilation dédiés pour améliorer la stabilité et la vitesse des compilations.
Points clés
Build Server (serveur de compilation) est un système informatique spécialisé conçu pour exécuter automatiquement les tâches liées à la compilation du code et à la préparation des versions. Contrairement à la compilation locale sur la machine du développeur, le serveur travaille avec une copie du dépôt, utilise un environnement propre et des versions de dépendances fixes.
Le serveur de compilation est un composant clé de la pratique d’Intégration Continue. Il garantit que chaque commit passe par le même processus de vérification, indépendamment de son auteur. Cela élimine le problème « ça marche sur ma machine » et assure un standard de qualité uniforme.
Selon Google DORA, 2025, les équipes utilisant un serveur de compilation dédié réduisent le temps de confirmation des changements de quelques heures à quelques minutes. Cela impacte directement la vitesse de livraison des fonctionnalités et des correctifs aux utilisateurs finaux.
La compilation d’applications mobiles nécessite des ressources importantes : la compilation de Kotlin ou Swift peut prendre de 5 à 40 minutes. Si vous exécutez la compilation sur la machine locale du développeur, il ne peut pas travailler de manière productive jusqu’à ce qu’elle se termine. Le serveur de compilation résout ce problème en libérant le développeur pour d’autres tâches.
En pratique, les termes sont souvent utilisés comme synonymes, mais il y a une nuance : un serveur CI (Jenkins, CircleCI) est un système qui gère les pipelines, tandis qu’un serveur de compilation est l’hôte physique ou virtuel sur lequel ces pipelines sont exécutés. Un serveur CI peut gérer plusieurs agents de compilation (build slaves).
Un serveur de compilation typique se compose de plusieurs composants, chacun responsable d’une étape spécifique du processus. Comprendre l’architecture aide à dimensionner correctement l’infrastructure en fonction de la charge de travail de l’équipe.
Executor (noyau d’exécution) — exécute les tâches de compilation. Il peut fonctionner comme des conteneurs Docker, des machines virtuelles ou directement sur l’hôte. File d’attente des travaux gère les priorités des compilations parallèles. Stockage des artefacts sauvegarde les résultats (APK, IPA, AAB) pour une publication ultérieure.
Pour accélérer le travail, le serveur de compilation peut gérer un pool d’agents. Chaque agent est une machine ou un conteneur indépendant capable d’effectuer des compilations. Lorsque la charge augmente, l’auto-scaling ajoute de nouveaux agents dans le cloud. Par exemple, Jenkins avec le plugin Kubernetes peut créer dynamiquement des pods pour chaque compilation.
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: android-sdk
image: openjdk:17-jdk
command: ['sleep','infinity']
"""
}
}
stages {
stage('Build') {
steps {
sh './gradlew assembleDebug'
}
}
}
}
Les serveurs de compilation sont divisés en plusieurs catégories selon la méthode d’hébergement et la pile cible. Le choix d’une solution spécifique dépend de la taille de l’équipe, du budget et des exigences de sécurité.
Jenkins, TeamCity, Bamboo, GitLab Runner (self-hosted) — installés sur vos propres serveurs ou VPS. Avantages : contrôle total de la configuration, possibilité d’utiliser n’importe quel logiciel, les données ne quittent jamais l’infrastructure de l’entreprise. Inconvénients : coûts d’administration, de mise à jour et de dimensionnement.
GitHub Actions, CircleCI, Bitrise, Codemagic, GitLab SaaS — ne nécessitent pas de gestion de serveur. Le paiement se fait par minute de compilation ou par abonnement. Pour les petites équipes, c’est le départ idéal. Pour les grands projets avec un volume élevé de compilations, les coûts peuvent dépasser ceux d’une solution self-hosted.
| Solution | Type | Plateformes | Prix de départ |
|---|---|---|---|
| Jenkins | Self-hosted | Toutes | Gratuit (open-source) |
| GitHub Actions | Cloud | Linux, macOS, Windows | 2000 min/mois gratuits |
| Bitrise | Cloud | iOS, Android, Flutter, React Native | $0 (90 min/mois) |
| TeamCity | Self-hosted | Toutes | Gratuit (100 compilations) |
La particularité d’iOS est que la compilation n’est possible que sur macOS. Options : Mac mini en rack, MacStadium (location de Mac), GitHub Actions avec runner macOS, Bitrise avec ses propres agents Mac. Un serveur de compilation Mac auto-hébergé nécessite l’achat de matériel coûteux et sa maintenance.
Examinons la configuration étape par étape d’un serveur de compilation pour un projet mobile avec des compilations Android et iOS. Nous utiliserons GitHub Actions avec un runner self-hosted pour iOS et un runner cloud pour Android comme base.
Choisissez une plateforme de gestion (Jenkins, GitLab, GitHub Actions). Installez le nœud maître, configurez l’accès au dépôt via SSH ou un jeton d’accès personnel. Configurez un webhook pour démarrer automatiquement la compilation lors des push dans le dépôt.
Enregistrez une ou plusieurs machines comme agents (slaves/runners). Pour les compilations Android, un agent peut fonctionner sur Linux ou Windows avec JDK, Android SDK et Gradle installés. Pour iOS — sur macOS avec Xcode Command Line Tools et CocoaPods.
Définissez les étapes : checkout, installation des dépendances, compilation, tests, publication des artefacts. Pour accélérer, utilisez la mise en cache des dépendances (cache Gradle, cache CocoaPods, couches d’images Docker).
name: Android Build
on:
push:
branches: [main, develop]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Cache Gradle
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
- name: Build Release APK
run: ./gradlew assembleRelease
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: app-release.apk
path: app/build/outputs/apk/release/app-release.apk
Le choix entre un serveur de compilation auto-hébergé et cloud n’est pas seulement une décision technique mais aussi financière. Le coût varie considérablement en fonction du volume de compilations, du temps d’exécution requis et de la nécessité de macOS pour iOS.
Un serveur self-hosted nécessite des dépenses d’investissement (CAPEX) : achat d’équipement (Mac mini à partir de $699, baies de serveurs, équipement réseau), configuration et maintenance. Les solutions cloud sont des dépenses opérationnelles (OPEX) : paiement par minute de compilation. Pour les petites équipes, l’OPEX est plus avantageux ; pour les grands projets avec des centaines de compilations par jour, le CAPEX est rentabilisé en 6–12 mois.
| Paramètre | Self-hosted (Jenkins) | Cloud (GitHub Actions) | Spécialisé (Bitrise) |
|---|---|---|---|
| Coûts initiaux | $1000–$5000 | $0 | $0 |
| Frais mensuels | $50–$200 (hébergement) | $0–$500 (limite de minutes) | $0–$300 (abonnement) |
| Support macOS | Nécessite Mac mini + configuration CI | Intégré (runner macOS) | Intégré |
| Administration | 5–10 heures/mois | 1–2 heures/mois | 1–2 heures/mois |
Lors de l’établissement du budget, tenez compte des coûts cachés : temps pour les mises à jour logicielles, le dépannage, les sauvegardes de configuration, le stockage réseau des artefacts. Pour les solutions self-hosted, ajoutez 20–30% au coût de maintenance de base. Pour les solutions cloud, assurez-vous que la limite de minutes couvre les pics de charge, surtout avant les versions.
Vous pouvez réduire les coûts du serveur de compilation de plusieurs manières : utilisez des instances spot dans le cloud (jusqu’à 70% moins chères), mettez en cache les dépendances entre les compilations, limitez le temps d’exécution des pipelines échoués et configurez l’arrêt automatique des agents self-hosted inactifs en dehors des heures de travail.
Le fonctionnement efficace d’un serveur de compilation nécessite le respect d’un certain nombre de principes. L’optimisation de la vitesse de compilation et la stabilité de l’infrastructure impactent directement la productivité de l’équipe de développement.
Gradle Build Cache, CCache pour C/C++, compilateur incrémentiel pour Kotlin et Swift — activez tous les mécanismes de cache disponibles. Configurez un cache de compilation distant (via HTTP ou S3) pour que différents développeurs et agents puissent partager les résultats de compilation.
Chaque compilation doit être exécutée dans un environnement propre. Utilisez des conteneurs Docker ou des machines virtuelles temporaires pour éviter que les compilations précédentes n’affectent la compilation en cours. Cela élimine le problème de « pollution d’état » (state pollution).
Le serveur de compilation a accès aux codes sources, aux clés de signature et aux secrets. Minimisez la surface d’attaque : utilisez des agents isolés pour différents projets, restreignez l’accès au nœud maître, utilisez des commits signés et vérifiez les dépendances pour les vulnérabilités.
Foire aux questions
Pour les petites équipes, les solutions cloud sont optimales : GitHub Actions (gratuit jusqu’à 2000 min/mois) ou Bitrise pour les projets mobiles. Elles ne nécessitent pas d’administration et sont rapides à configurer.
Oui, mais il faudra deux types d’agents : sur macOS pour iOS et sur Linux/Windows pour Android. Le serveur CI (Jenkins, GitLab) peut gérer les deux types d’agents à partir d’une seule interface.
Pour les compilations Android — minimum 8 Go de RAM, 16 Go recommandés. Pour iOS — à partir de 8 Go. Si le pipeline exécute plusieurs compilations en parallèle, la mémoire augmente linéairement : N compilations x 8 Go.
Un serveur self-hosted offre un contrôle total de la configuration, n’a pas de limite de minutes de compilation (rentable pour les gros volumes) et assure l’isolation des données. Les solutions cloud sont plus rentables pour les petites et moyennes équipes.
Oui, les projets Flutter nécessitent également des compilations pour différentes plateformes. Codemagic est un CI/CD spécialisé pour Flutter qui prend en charge les compilations simultanées d’Android, iOS, Web et Desktop à partir d’un seul dépôt.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi