Fastlane: automatización de iOS en el control de crucero
Publicado: 2022-03-11Hacer software para iOS es más que solo escribir código Objective-C o Swift: implica saber cómo funciona UIKit, cómo se hacen los certificados, cómo publicar su aplicación en la tienda, cómo lidiar con las revisiones de la aplicación y más. Si encuentra que esta eterna lista de tareas es agotadora, algo de automatización en su flujo de trabajo es exactamente lo que necesita.
Conoce Fastlane, la herramienta diseñada para ahorrarte minutos o incluso horas en cada despliegue.
Fastlane lo ayuda a automatizar el proceso de envío de compilaciones beta a Crashlytics, TestFlight, App Store y mucho más.
En este artículo, aprenderá cómo puede usar Fastlane para automatizar el flujo de trabajo de implementación de su aplicación iOS. Aunque nos centraremos en el aspecto iOS de esta herramienta, Fastlane funciona igual de bien para la automatización del desarrollo de Android.
Primeros pasos con Fastlane
Hay varios métodos de instalación entre los que puede elegir, dependiendo de lo que le resulte más fácil. Si tiene Homebrew instalado y configurado, la instalación de Fastlane requiere solo un comando:
brew cask install fastlane
De lo contrario, siendo Fastlane una herramienta basada en Ruby, la gem
siempre es una opción:
sudo gem install fastlane -NV
O bien, siempre puede descargar Fastlane desde el sitio web oficial.
Una vez que haya instalado Fastlane, ejecute fastlane init
en el directorio de su proyecto y siga las instrucciones.
Automatización de la implementación
Con Fastlane instalado, ahora puede escribir secuencias de comandos de Ruby para indicar paso a paso lo que debe hacer para llevar su implementación a donde la desea. Esto se hace usando acciones, herramientas y carriles.
Herramientas, acciones y complementos de Fastlane
Fastlane funciona al tener herramientas en su núcleo que lo ayudan a construir su aplicación. Además de las herramientas de compilación, hay más de 170 integraciones integradas con servicios como Crashlytics, HockeyApp, TestFlight y más complementos creados y publicados por terceros para que pueda conectarse a otros servicios y más.
Básicamente, obtiene las herramientas principales que le permiten realizar una variedad de tareas: desde tomar capturas de pantalla automatizadas hasta enmarcarlas y cargarlas en la tienda, le permite ejecutar todas sus pruebas automáticamente antes de crear la aplicación.
Las acciones son las herramientas principales que tiene Fastlane, y los complementos son una forma de agregar acciones de terceros a su configuración de Fastlane.
carriles
Fastlane usa carriles que esencialmente agrupan una lista de acciones o complementos secuencialmente para que pueda lograr el mismo resultado cada vez.
Al ejecutar un carril, cada acción exportará una variable de entorno y las siguientes acciones obtendrán automáticamente estas variables para mantener el proceso en marcha. Por ejemplo, al usar la acción del gym
, se generará la ruta del archivo .ipa
, y al usar crashlytics
accederá a esta ubicación .ipa
para cargar este archivo en su sistema de distribución de servicios beta.
Uso de Fastlane con iOS
Está comenzando con un nuevo cliente de Toptal que quiere una aplicación muy simple. El diseño ya está hecho y la aplicación se puede codificar en unas pocas semanas. El siguiente paso es comenzar a codificarlo, y durante el proceso de iteración, enviará una aplicación beta cada dos semanas al cliente para que pueda ver su progreso y brindarle comentarios sobre cómo funcionan las cosas.
Cada vez que envíe una versión beta al cliente, pasará por una lista de verificación básica: firmar la aplicación, subirla a un servicio beta, agregarle una nueva versión, etc. Agregue a esto las cosas que tiene que hacer una vez (cada año): firma de certificados, firma de certificados de notificación push (si es necesario) y más.
¡Con Fastlane, todo esto ahora puede suceder automáticamente!
Enviar a Crashlytics Beta
Por ejemplo, debe crear certificados de firma y perfiles de aprovisionamiento para compartir su aplicación a través de Crashlytics Beta.
Fastlane tiene una acción llamada match
que, una vez que la configuras, hace lo siguiente:
- Crear certificados de firma de distribución.
- Cree un perfil de aprovisionamiento ad-hoc (adjunto al certificado del n.° 1).
- Guarde el certificado y el perfil del n.º 1 y el n.º 2 en un repositorio de Git, encriptados mediante OpenSSL.
La configuración es sencilla.
Primero, ejecute fastlane match init
para comenzar y, una vez que configure su repositorio de Git, simplemente llame a fastlane match adhoc
para obtener un perfil de aprovisionamiento ad-hoc o ejecute fastlane match appstore
para obtener un certificado de App Store.

Las ventajas de usar match
son que puede sincronizar los certificados muy fácilmente entre computadoras, y entre compañeros de equipo, sin tener que revocar más los certificados, y la velocidad que gana. Simplemente ejecutar la tienda de fastlane match appstore
le otorga un certificado en un par de segundos.
Bueno, ahora que tenemos los certificados y el aprovisionamiento que necesitamos, hagamos un lanzamiento a Crashlytics.
Un flujo de trabajo típico para enviar su aplicación a Crashlytics de Fabric incluye los siguientes pasos:
- Cree los certificados de firma de distribución.
- Cree un perfil de aprovisionamiento ad-hoc (adjunto al certificado del n.° 1).
- Configure su aplicación para usar el perfil de aprovisionamiento del n.° 2.
- Archiva tu aplicación.
- Abra Fabric y siga los pasos para enviar la aplicación a los probadores beta.
Fastlane reemplaza la tarea con esto:
platform :ios do lane :beta do match(type: “adhoc”) gym crashlytics end end
Ahora, ejecutar fastlane beta
desde su terminal iniciará este script.
Primero llamará a match
, una acción que maneja la creación y actualización de certificados de firma y perfiles de aprovisionamiento, luego llamará a gym
, una acción que crea y empaqueta la aplicación para usted, usando los mismos certificados y perfiles creados antes, y finalmente, crashlytics
, que es Voy a tomar este .ipa
firmado y subirlo al servicio de Crashlytics.
Todos esos pasos se llaman, siempre, en el mismo orden, lo que hace que el archivo resultante sea más predecible y reduce los errores.
MacBook-Pro:TestProject user$ fastlane beta +------+-------------------------------------+-------------+ | fastlane summary | +------+-------------------------------------+-------------+ | Step | Action | Time (in s) | +------+-------------------------------------+-------------+ | 1 | Verifying required fastlane version | 0 | | 2 | match | 57 | | 3 | gym | 592 | | 4 | crashlytics | 195 | +------+-------------------------------------+-------------+ [20:25:13]: fastlane.tools just saved you 14 minutes!
Esa fue una configuración básica sobre cómo ejecutar Fastlane para enviar su aplicación a Crashlytics. ¿Qué más podemos automatizar?
Incremento de versiones de compilación
Podemos, por ejemplo, configurar que cada vez que vamos a enviar una versión beta, queremos aumentar el número de versión de compilación.
Esto se puede lograr usando una acción llamada increment_build_number
que se puede llamar desde una terminal mediante fastlane run increment_build_number
o se puede usar en línea en nuestro carril beta:
platform :ios do lane :beta do increment_build_number match(type: “adhoc”) gym crashlytics end end
¡Felicidades! Ahora tiene un script de implementación automatizado que también incrementa su número de versión de compilación. La única advertencia es que, una vez que llame a este carril, tendrá archivos modificados en su proyecto (o, al menos, los que incorporan el número de compilación).
En caso de que estuviera planeando confirmar ese cambio en el repositorio de todos modos, hay una acción para eso: commit_version_bump
. Esta acción confirma los archivos con el nuevo número de versión.
platform :ios do lane :beta do increment_build_number match(type: "adhoc") gym crashlytics commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
Esto confirmará los archivos con un mensaje de confirmación como este "Version Bump to 27".
Crashlytics a TestFlight
Bueno, si llegó hasta aquí, puede tener una implementación automatizada en Crashlytics en muy poco tiempo que le ahorrará innumerables horas a largo plazo. La mejor parte es que, si quisiera enviar su aplicación a TestFlight, todo lo que necesitaría hacer es cambiar crashlytics
a pilot
.
O bien, puede crear un carril separado para eso:
platform :ios do lane :beta-testflight do increment_build_number match(type: "adhoc") gym pilot commit_version_bump( xcodeproj:"myProject.xcodeproj", ) end end
Automatización de iOS simplificada
Fastlane es simple y fácil de usar. Pero aporta un valor increíble a su flujo de trabajo habitual de desarrollo de iOS al evitar que haga cosas insignificantes y horas de su tiempo que habría terminado desperdiciando.
Espero que encuentre útil esta introducción a Fastlane. Puede consultar la documentación oficial para obtener más información sobre Fastlane, especialmente la lista de acciones si está buscando inspiración sobre lo que podría automatizar para sus proyectos iOS actuales y futuros.