Fastlane es una herramienta de automatización de builds y publicaciones de aplicaciones móviles para iOS y Android. Fastlane gestiona la firma de código, la compilación, la ejecución de pruebas, la creación de capturas de pantalla y la carga en App Store Connect y Google Play Console. Es el estándar de facto para CI/CD en el desarrollo móvil.
Conclusiones principales
Fastlane es una herramienta open-source que automatiza tareas rutinarias del desarrollo móvil: compilar la aplicación, ejecutar pruebas, crear capturas de pantalla, gestionar certificados y cargar builds en TestFlight, App Store y Google Play. Fastlane está escrito en Ruby y se distribuye a través de RubyGems con el comando gem install fastlane.
Fastlane apareció en 2015 como una herramienta para iOS, pero rápidamente se expandió a Android. Hoy es un ecosistema de docenas de actions — comandos integrados que se pueden combinar en escenarios llamados lanes. Cada lane realiza una tarea específica: por ejemplo, build_release compila la versión de lanzamiento y deploy_beta sube el build a TestFlight.
Fastlane es utilizado por empresas como Uber, Airbnb, Snapchat, Twitter y Shopify. Según una encuesta de 2024, más del 60% de los desarrolladores iOS usan Fastlane en sus proyectos. La herramienta admite tanto la ejecución local como la integración con sistemas CI en la nube, lo que la convierte en el estándar de facto para CI/CD móvil.
# Instalación de Fastlane
sudo gem install fastlane -NV
# Inicialización en el proyecto
fastlane init
Después de la inicialización, Fastlane crea un directorio fastlane/ con tres archivos: Fastfile (escenarios), Appfile (configuración de la app) y Matchfile (configuración de certificados). Esta estructura es la misma para ambas plataformas: iOS y Android.
El archivo de configuración principal de Fastlane es Fastfile. Se encuentra en el directorio fastlane/ en la raíz del proyecto. Fastfile está escrito en Ruby: cada lane es un bloque con nombre que contiene una secuencia de actions. Un lane puede aceptar parámetros, llamar a otros lanes y devolver valores.
# fastlane/Fastfile — ejemplo para iOS
default_platform(:ios)
platform :ios do
desc "Build and upload to TestFlight"
lane :beta do
match(type: "appstore")
gym(scheme: "MyApp", configuration: "Release")
pilot(skip_waiting_for_build: true)
end
desc "Deploy to App Store"
lane :release do
ensure_git_status_clean
match(type: "appstore")
gym(scheme: "MyApp")
deliver(
skip_metadata: true,
skip_screenshots: true
)
push_to_git_remote(tags: true)
end
end
Cada lane se ejecuta con el comando fastlane ios beta o fastlane ios release. Fastfile admite variables, condiciones, bucles y llamadas a scripts externos — es un archivo Ruby completo. Los desarrolladores pueden reutilizar código mediante private_lane (métodos locales) e import desde otros Fastfiles.
Fastlane proporciona más de 200 actions integradas para la mayoría de las tareas. Si no existe la action necesaria, se puede escribir una propia en Ruby o llamar a un comando shell con sh("..."). Las actions pueden aceptar parámetros — configuración de compilación, rutas, tokens de acceso — y devolver resultados para usarlos en pasos siguientes.
Fastlane para iOS resuelve tres problemas clave: gestión de certificados y provisioning profiles, compilación de IPA mediante Xcode y publicación en App Store Connect y TestFlight. Cada una de estas tareas está cubierta por una action específica.
match es una action para la gestión de certificados. Almacena todos los certificados y provisioning profiles en un repositorio Git cifrado. Cada desarrollador y servidor CI usan el mismo conjunto de archivos, lo que elimina conflictos y problemas con certificados caducados. Match actualiza automáticamente los perfiles al añadir nuevos dispositivos.
sigh crea y descarga un provisioning profile a través de Apple Developer Portal. Se usa cuando se necesita obtener rápidamente un perfil para un tipo específico: development, ad-hoc o appstore.
gym compila el IPA. Gym envuelve xcodebuild con parámetros óptimos, selecciona automáticamente el esquema, la configuración, las opciones de exportación y crea un IPA firmado. Ejemplo: gym(scheme: "MyApp", export_method: "app-store").
pilot gestiona TestFlight. Sube el build, añade testers y realiza un seguimiento del estado de la revisión. deliver se encarga de la publicación completa en App Store, incluyendo metadatos, capturas de pantalla, precios y versiones.
# Compilación y publicación de una app iOS
lane :deploy_ios do
cocoapods
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(changelog: "Bug fixes and performance improvements")
end
Para trabajar con App Store Connect se necesitan tokens de acceso. Fastlane admite dos métodos de autenticación: App Store Connect API Key (recomendado) y Apple ID con autenticación de dos factores. Las claves API son más convenientes para CI/CD ya que no requieren introducir la contraseña de forma interactiva.
| Action | Propósito | Equivalente manual |
|---|---|---|
match | Gestión de certificados y perfiles | Apple Developer Portal |
sigh | Creación de provisioning profile | Xcode + Developer Portal |
gym | Compilación de IPA | xcodebuild + xcrun |
pilot | Carga en TestFlight | Xcode Organizer |
deliver | Publicación en App Store | App Store Connect Web |
scan | Ejecución de tests UI | xcodebuild test |
En Android, Fastlane automatiza la compilación mediante Gradle, la firma de APK y AAB, la carga en Google Play Console y Firebase App Distribution.
gradle es la action principal para compilaciones Android. Llama al wrapper de Gradle con las tareas necesarias: gradle(task: "assembleRelease") o gradle(task: "bundleRelease") para AAB. Se pueden pasar flags, variables de entorno y la ruta a gradle.properties.
supply sube APK o AAB a Google Play Console. Supply gestiona versiones, tracks (internal, alpha, beta, production), notas de la versión, precios y distribución por país. Ejemplo: supply(track: "beta", release_status: "completed").
screengrab crea capturas de pantalla para Google Play. Ejecuta tests de instrumentación que toman capturas de la app en diferentes dispositivos e idiomas. Las capturas resultantes se suben mediante supply.
# Compilación y publicación de una app Android
lane :deploy_android do
gradle(task: "clean bundleRelease")
supply(
track: "beta",
release_status: "completed",
version_code: 42
)
end
| Action | Propósito | Equivalente manual |
|---|---|---|
gradle | Compilación con Gradle | ./gradlew assembleRelease |
supply | Carga en Google Play | Google Play Console Web |
screengrab | Creación de capturas | Captura manual + ImageMagick |
firebase_app_distribution | Distribución mediante Firebase | Firebase Console Upload |
Fastlane está diseñado para funcionar en pipelines CI/CD. Maneja correctamente el modo no interactivo, las variables de entorno y los artefactos de compilación. A continuación se muestran ejemplos de integración con sistemas CI populares.
En GitHub Actions, Fastlane se ejecuta como un script de Ruby. Un flujo de trabajo típico: instalar Ruby y Fastlane, configurar claves (certificados, tokens API mediante secrets) y ejecutar el lane. iOS requiere un runner macOS; Android funciona en ubuntu-latest.
En GitLab CI, Fastlane se usa en .gitlab-ci.yml con un esquema similar: instalar dependencias, ejecutar fastlane y pasar artefactos. GitLab CI admite runners macOS y Linux.
Bitrise — un CI/CD especializado para aplicaciones móviles — tiene soporte integrado para Fastlane. Bitrise Workflow puede llamar al Fastlane Step o ejecutar scripts personalizados con fastlane. Bitrise gestiona los certificados a través de su gestor de Code Signing.
# Fastfile para CI/CD con ejecución condicional de tests
lane :ci_test do
scan(scheme: "MyApp", code_coverage: true)
end
lane :ci_beta do
ensure_git_status_clean
version_bump_podspec(path: "MyApp.podspec")
match(type: "appstore", readonly: true)
gym(scheme: "MyApp", export_method: "app-store")
pilot(distribute_external: true)
end
Un aspecto importante de la integración con CI/CD es el almacenamiento de secretos. Fastlane utiliza el archivo .env mediante dotenv y variables de entorno. Para iOS, las variables críticas son: MATCH_PASSWORD, FASTLANE_APPLE_API_KEY, FASTLANE_APPLE_API_KEY_ID. Para Android: SUPPLY_JSON_KEY_DATA — el contenido de la cuenta de servicio de Google Play.
Fastlane incluye más de 200 actions integradas. A continuación se ofrece una visión general de las más populares con su plataforma y propósito.
| Action | Plataforma | Descripción |
|---|---|---|
gym | iOS | Compilar IPA con parámetros optimizados de xcodebuild |
match | iOS | Sincronizar certificados y provisioning profiles mediante Git |
pilot | iOS | Subir build a TestFlight y gestionar testers |
deliver | iOS | Publicar app en App Store con metadatos |
scan | iOS | Ejecutar tests unitarios y UI con generación de informes |
gradle | Android | Ejecutar tareas de Gradle: assemble, bundle, test |
supply | Android | Subir APK y AAB a Google Play Console |
screengrab | Android | Capturas automáticas para Google Play |
firebase_app_distribution | Android | Distribuir builds mediante Firebase |
snapshot | iOS | Capturas automáticas en simuladores para App Store |
increment_build_number | iOS | Auto-incremento del build number en el proyecto Xcode |
appcenter_upload | Ambas | Subir build a App Center |
Para buscar la action necesaria se usa el comando fastlane action [nombre], que muestra documentación, parámetros y ejemplos. La lista completa está disponible localmente: fastlane actions.
Fastlane también admite plugins — extensiones de la comunidad que añaden nuevas actions. Los plugins se instalan mediante fastlane add_plugin [nombre] y están disponibles en el registro de RubyGems. Ejemplos de plugins populares: fastlane-plugin-versioning (gestión de versiones), fastlane-plugin-sentry (subir símbolos de depuración a Sentry), fastlane-plugin-teams (notificaciones en Microsoft Teams).
Preguntas Frecuentes
Fastlane es una herramienta de automatización de builds y publicación de aplicaciones móviles. Sirve para reemplazar las operaciones manuales — compilación, firma, carga en tiendas — con un solo comando. Fastlane reduce el tiempo de lanzamiento de horas a minutos y elimina los errores humanos durante la publicación.
Sí. Fastlane admite ambas plataformas de forma independiente. iOS requiere macOS, mientras que Android solo necesita Linux. En un mismo Fastfile se pueden separar las lanes por plataforma: platform :ios do ... end y platform :android do ... end.
A través de la action match. Almacena certificados cifrados y provisioning profiles en un repositorio Git. Cada desarrollador clona el repositorio, match descifra los archivos con la contraseña de la variable MATCH_PASSWORD y los instala en el llavero. Esto resuelve el problema de "en mi máquina funciona".
Sí. Fastlane tiene una action integrada firebase_app_distribution para subir APK e IPA a Firebase App Distribution. También está disponible firebase_app_distribution_add_testers para añadir testers. Una alternativa es la action appcenter_upload para App Center.
Fastlane se instala mediante RubyGems: gem install fastlane -NV. iOS requiere macOS con Xcode; Android requiere Linux o macOS con JDK y Android SDK. En GitHub Actions existe una action preparada ruby/setup-ruby para instalar Ruby y Fastlane. Las variables de entorno se pasan mediante los secrets del sistema CI.
Fastlane es una biblioteca y CLI para automatizar tareas de compilación y publicación. Bitrise y Jenkins son plataformas CI/CD completas. Fastlane funciona dentro de ellas: Jenkins ejecuta Fastlane como un paso del pipeline, Bitrise llama a Fastlane mediante un Step dedicado. Fastlane no reemplaza un sistema CI, sino que lo complementa con funcionalidad específica para móviles.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también