Ruby est un langage dynamique interprété à la syntaxe élégante, connu pour le framework Ruby on Rails. Dans le développement mobile, Ruby est utilisé principalement via Fastlane — l'outil standard pour automatiser les builds, les tests et le déploiement des applications iOS et Android. Selon la documentation officielle de Fastlane, l'outil est utilisé dans plus de 100 000 projets dans le monde.
Points clés
Ruby est un langage dynamique interprété open source créé par Yukihiro Matsumoto en 1995. Le principe fondamental de Ruby est la « simplicité optimale » (principe de moindre surprise). Le langage est connu pour ses blocs (closures), son approche purement orientée objet (tout est un objet, y compris les nombres) et son puissant système de métaprogrammation.
Ruby fonctionne sur l'interpréteur YARV (Yet Another Ruby VM) avec compilation JIT depuis la version 3.1. La version actuelle Ruby 3.4 (2025) inclut des décorateurs, un analyseur Prism amélioré et un support expérimental des types via RBS. RubyGems — le gestionnaire de paquets — contient plus de 200 000 gems.
Ruby on Rails est le framework web le plus célèbre construit avec Ruby, mais dans le développement mobile, Ruby est utilisé différemment. Son créneau principal est Fastlane : un écosystème de scripts Ruby et de gems pour automatiser toutes les étapes du cycle de vie d'une application mobile — de la signature de code à la publication sur les magasins.
Travailler avec Fastlane nécessite seulement une compréhension de base de Ruby : méthodes, blocs do-end, symboles (:symbol) et syntaxe des hachages { key: value }. Contrairement à Python, Ruby utilise end pour fermer les blocs au lieu de l'indentation. Les méthodes peuvent être appelées sans parenthèses — cela est activement utilisé dans le DSL de Fastlane.
# Syntaxe Ruby de base utilisée dans Fastlane
def download_assets(version, platform: "ios")
paths = {
ios: "ios/Assets.car",
android: "android/app/src/main/assets"
}
url = "https://cdn.example.com/assets/#{version}/#{paths[platform.to_sym]}"
puts "Downloading from: #{url}"
unless File.exist?("temp/assets")
Dir.mkdir("temp/assets")
end
result = system("curl -o temp/assets.zip #{url}")
raise "Download failed" unless result
end
download_assets("1.2.3", platform: "android")Dans l'exemple, la méthode download_assets prend un argument version et un paramètre nommé optionnel platform (par défaut "ios"). L'interpolation de chaînes avec #{...} intègre les valeurs directement dans les chaînes. unless est l'inverse de if — il exécute le code quand la condition est fausse.
Fastlane est un outil open source écrit en Ruby. Installé via gem install fastlane, il fournit un ensemble de commandes pour automatiser les tâches les plus routinières du développeur mobile : création de captures d'écran, signature de code, publication sur TestFlight et Google Play Console.
Fastlane se compose d'outils : sigh (gestion des certificats), match (synchronisation des certificats en équipe), gym (builds iOS), gradle (builds Android), deliver (publication iOS), supply (publication Android), snapshot (captures d'écran), scan (tests). Tous les outils sont accessibles depuis un seul Fastfile.
Dans les grands projets, Fastlane gère plus de 50 actions dans un seul pipeline : incrémentation de version, téléchargement d'assets depuis un CDN, build, signature, téléversement vers App Store Connect, envoi de notifications Slack. L'ensemble du pipeline s'exécute avec une seule commande : fastlane release.
Fastfile est un fichier DSL similaire à Ruby décrivant une séquence d'actions (lanes). Chaque lane est une tâche distincte : beta (build de test), release, screenshots. Les lanes peuvent appeler d'autres lanes avec des paramètres passés.
# Fastfile — configuration du pipeline de build d'application iOS
fastlane_version "2.220.0"
default_platform :ios
platform :ios do
desc "Construction et déploiement du build TestFlight"
lane :beta do |options|
increment_build_number(
build_number: options[:build]
)
match(type: :appstore)
gym(
scheme: "MyApp",
export_method: "app-store",
configuration: "Release"
)
upload_to_testflight(
app_identifier: "com.example.myapp"
)
slack(
message: "Build #{options[:build]} téléversé dans TestFlight"
)
end
endLa lane beta exécute séquentiellement : incrémenter le numéro de build (increment_build_number), synchroniser les certificats (match), compiler l'archive (gym), téléverser vers TestFlight (upload_to_testflight) et envoyer une notification Slack. Le paramètre :build est passé à la lane comme argument nommé.
Fastlane prend en charge les deux plates-formes dans un seul Fastfile. Pour Android, utilisez une lane dans platform :android avec les actions gradle, supply et google_play_track_version_codes.
platform :android do
desc "Construction de l'APK et publication dans Google Play Internal Testing"
lane :beta do
gradle(
task: "assemble",
build_type: "Release",
flavor: "Production"
)
supply(
track: "internal",
apk_paths: ["app/build/outputs/apk/release/app-release.apk"]
)
end
endFastlane comprend plus de 200 actions intégrées. Voici les plus importantes pour le développement mobile, organisées par catégorie.
| Action | Plateforme | Objectif |
|---|---|---|
| match | iOS | Synchroniser les certificats et profils de provisionnement via Git |
| gym | iOS | Compiler les archives .app et .ipa |
| scan | iOS | Exécuter les tests UI sur simulateur |
| snapshot | iOS | Génération automatique de captures d'écran sur différents appareils |
| deliver | iOS | Téléverser build, captures et métadonnées vers App Store Connect |
| pilot | iOS | Gestion TestFlight : téléverser des builds, ajouter des testeurs |
| gradle | Android | Exécuter des tâches Gradle : assemble, test, bundle |
| supply | Android | Téléverser APK/AAB et métadonnées vers Google Play Console |
| screengrab | Android | Captures d'écran automatiques pour Google Play |
| firebase_app_distribution | Les deux | Téléverser le build vers Firebase App Distribution |
match est une gem Fastlane pour synchroniser les certificats iOS et les profils de provisionnement entre les développeurs. Tous les secrets sont stockés dans un dépôt Git chiffré ou S3. Match génère automatiquement les certificats s'ils manquent et les renouvelle à l'expiration.
# Initialisation de match pour un nouveau projet
$ fastlane match init
# Création et synchronisation des certificats App Store
$ fastlane match appstore
# Création de certificats Development pour l'équipe
$ fastlane match development
# Renouvellement de tous les certificats à l'expiration
$ fastlane match --forceMatch stocke les clés privées avec une phrase de passe connue uniquement des développeurs. Chaque développeur clone le dépôt de certificats et exécute match pour installer les profils actuels. Les certificats Apple sont valables 1 an ; match les renouvelle automatiquement.
Fastlane s'intègre avec toutes les plateformes CI/CD : GitHub Actions, GitLab CI, CircleCI, Bitrise, Jenkins et Xcode Cloud (via xcode-build). Fastlane s'exécute sur CI avec fastlane <lane_name> et renvoie un code d'erreur en cas d'échec d'une étape.
La configuration pour GitHub Actions comprend l'installation de Ruby, fastlane et l'exécution de la lane via bundle exec fastlane. Les builds iOS nécessitent un runner macOS. Les builds Android peuvent utiliser ubuntu-latest, ce qui est moins cher.
# .github/workflows/deploy.yml — CI/CD avec Fastlane
name: Deploy Mobile App
on:
push:
branches: [main]
jobs:
ios-deploy:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@v1
with:
ruby-version: "3.3"
- run: bundle install
- run: bundle exec fastlane beta
- env:
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}Le workflow s'exécute lors d'un push sur main. Le runner macOS exécute bundle exec fastlane beta depuis le Fastfile. MATCH_PASSWORD est transmise via GitHub Secrets pour le déchiffrement des certificats. Après la fin de la lane, une action Slack envoie une notification.
RubyGems est le gestionnaire de paquets pour Ruby. Fastlane est étendu via des plugins — des gems qui ajoutent de nouvelles actions. Le plugin fastlane-plugin-versioning gère les versions, fastlane-plugin-firebase_app_distribution téléverse les builds vers Firebase. Il y a plus de 500 plugins Fastlane sur GitHub.
Le Gemfile à la racine du projet fixe les versions de toutes les dépendances pour des builds reproductibles. bundle install installe les gems depuis Gemfile.lock. Les gems essentielles pour le développement mobile incluent : fastlane, cocoapods (dépendances iOS), xcodeproj (manipulation .xcodeproj).
# Gemfile pour un projet mobile
source "https://rubygems.org"
gem "fastlane", "~> 2.220"
plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)Fastlane n'est pas le seul outil d'automatisation. Comparons-le avec les principales alternatives selon des critères importants pour une équipe mobile.
| Critère | Fastlane (Ruby) | Bitrise (web) | Xcode Cloud (Apple) | GitHub Actions (YAML) |
|---|---|---|---|---|
| Flexibilité | Maximale (code) | Moyenne (étapes) | Faible (limité) | Élevée |
| iOS | Support complet | Complet | Complet (intégré) | Via macOS auto-hébergé |
| Android | Support complet | Complet | Non | Complet |
| Certificats (match) | Intégré | Via Code Signing | Automatique | Via fastlane |
| Exécution locale | Oui | Non (CI seulement) | Non | Via act |
| Plugins | 500+ | 200+ intégrations | Aucun | 20 000+ actions |
Fastlane reste l'outil le plus flexible pour les pipelines complexes. Bitrise est pratique pour les équipes sans développeur Ruby. Xcode Cloud convient aux projets iOS simples. GitHub Actions est idéal si l'équipe utilise déjà GitHub.
Questions fréquentes
Ruby n'est pas utilisé pour écrire des applications mobiles, mais pour automatiser les processus de build, de test et de déploiement via Fastlane. Fastlane est le standard de facto pour CI/CD dans le développement iOS et Android.
Fastlane fonctionne sur macOS, Linux et Windows, mais les builds iOS nécessitent Xcode et macOS. Les builds Android peuvent s'exécuter sur n'importe quelle plateforme. Les développeurs utilisent macOS localement, et sur CI — macOS pour iOS et Linux pour Android.
Une compréhension de base de Ruby suffit pour travailler avec Fastlane. Fastlane utilise un DSL similaire à Ruby dans le Fastfile. Pour les tâches typiques, la connaissance des gems, des blocs do-end et de la syntaxe de base suffit. Une connaissance approfondie de Ruby n'est pas nécessaire.
Alternatives : Gradle pour Android (intégré), Xcode Cloud (Apple), Bitrise (interface web), GitHub Actions (YAML). Fastlane reste l'outil le plus flexible grâce à son riche écosystème d'actions et de plugins.
Oui, Fastlane est utilisé par de grandes entreprises. Toutes les actions et fichiers de configuration sont versionnés dans le dépôt, et match garantit le stockage sécurisé des certificats dans un dépôt ou S3.
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