Hablemos de Fastlane y de como usarlo

Hola, te presento a Fastlane

Recuerdo aun esos días de invierno cuando generaba mis certificates y provisioning profile de forma manual, la verdad es que eran buenos tiempos, todo hasta que empiezas a gestionar más aplicaciones, las cuales a su vez empiezan a tener widgets, una aplicación para Apple Watch y así, a eso agrégale que tu equipo va aumentando y uno de ellos revoca un certificado o quieres pasarte a otra maquina por X razones, mis días de invierno se convirtieron en días de infierno y de los queman con intensidad.

La familia Fastlane

Recuerdo que ese día le conte a mi líder sobre las posibilidades que nos ofrecía Fastlane en el caso que lo agregemos en nuestro flujo de trabajo, en ese momento vino una colección de preguntas y respuestas sobre Fastlane.

Implementado Fastlane

Para mostrarles el potencial de Fastlane crearé un proyecto que se llame “Weriklandia” y usaremos cocoapods para gestionar nuestras dependencias y a su vez haremos que el número de build aumente, pero esperen, aún no he instalado Fastlane. 😅

Instalación de Fastlane

La página web de Fastlane ofrece un inicio rápido, en esta página puedes realizar una configuración para tu Fastlane que es un archivo Fastfile y además obtener Fastlane el cuál tienes que descargar en un zip, descomprimirlo y agregarlo a tu projecto.

Desde está web obtienes Fastlane
Luego lo colocas en tu projecto
Ejecutas el comando y estaremos listos

Match

Antes de todo crearemos e instalaremos el certificate y provisioning profile para desarrollar nuestra aplicación, si trabajas solo, no hay ningún inconveniente que uses tu usuario personal, pero si trabajas en equipo lo más recomendable para que Match trabaje sin ningún problema y aparte para no tener conflictos con las configuraciones de los code signing identity es mejor tener un usuario único para todo el equipo, tanto en el apple developer center como en tu plataforma de versionamiento de confianza (github o bitbucket, por dar un ejemplo).
Lo único que tendríamos que hacer es escribir “match” en nuestro terminal y brindarle a Match la información que nos pida para que haga su magia.

Ya tenemos nuestros certificates instalados :D
No olvides de seleccionar los provisioning profile

Gym

Gym será el que nos ayude a generar nuestro ipa, para el desarrollo de nuestro ejemplo usaremos dos configuraciones básicas que sera scheme y export_method.

gym(
scheme: "Weriklandia",
export_method: "development"
)
fastlane gym --scheme "Weriklandia" --export_method "development"
scheme "WeriklandiaBeta"

sdk "iphoneos9.0"

clean true

output_directory "./build" # Donde se exportara el ipa
output_name "Weriklandia"

Pilot

Pilot nos permite gestionar nuestro builds y beta tester de una manera más eficiente, podemos subir nuestros builds como a su vez agregar y quitar beta tester, para nuestra demo usaremos la siguiente configuración.

pilot(skip_waiting_for_build_processing:true)

Lane

Un lane vendría a ser como una colección de acciones que programarás según tu workflow, es aquí donde empezaremos a mezclar el potencial de la familia Fastlane y lo veremos reflejado cuando usemos un Fastfile. Un ejemplo de lane sería el siguiente:

lane :prueba do
gym(
scheme: "Weriklandia",
export_method: "development"
)
pilot(skip_waiting_for_build_processing:true)
end
$ fastlane prueba

Fastfile

¿Recuerdas que configuramos una archivo Fastfile en la web al momento de descargar Fastlane?, ese archivo es donde le vamos a decirle a Fastlane que es lo que tiene que hacer mediante el uso de lanes y vamos a explicar rápido lo que configuramos en la web.

  1. Incrementará el numero de nuestro build
  2. Creará un ipa con Gym
  3. Subirá nuestro ipa a Testflight, pero para esta primera prueba lo comentaremos
  4. Y si posees un webhook para slack, te avisara por un channel o a un usuario en especial que se ha terminado de ejecutar nuestro lane
  5. Luego tenemos que decir ¡Wow!
¿listos?
¡Éxito!, en caso que haya fallado no dudes en preguntar en los comentarios o por twitter @erikfloresq
Esto es lo que obtendríamos en nuestra carpeta de proyecto

Utilizando Acciones

Aparte de las herramientas que te ofrece Fastlane, nos ofrece un colección de acciones que nos ayudará a armar flujos mas complejos, por ejemplo ya hemos usado dos acciones en nuestros Fastfile, estos son “cocoapods”, “slack” e “increment_build_number”, para profundizar en el uso de acciones haremos lo siguiente:

sh("ios-readme-generator 
-n '#{application_name}'
-i '#{application_id}'
-a '#{get_version_number}'
-b '#{get_build_number}'
-l '#{application_language}'
-d '#{application_deploy_target}'
-f '#{readme_generation_output}'
")

Creación de plugins para Fastlane

La creación de un plugin para Fastlane es muy fácil, por ejemplo crearemos un plugin para crear nuestro readme usando ios-readme-generator.

fastlane new_plugin ios_readme_generator
$ fastlane add_plugin fastlane-plugin-ios_readme_generate
ios_readme_generate(
app_name: "Weriklandia",
app_id: "pe.com.orbis.weriklandia",
app_version: "1.0",
build: "10",
language: "swift 3",
deployment_target: "iOS 9",
file_destination: "./README.md"
)

Siguientes pasos

  • No se olviden que Fastlane tiene mas herramientas que mencionamos en un principio y que podemos ir agregando a nuestros flujos.
  • Podemos integrar Fastlane con Jenkins con esto podríamos tener un flujo de continuous delivery con continuous integration.
  • El post se dedicó a usar Fastlane con un proyecto iOS pero también se puede usar Fastlane para un proyecto android y un proyecto para macOS.

En resumen

Fastlane es algo que deberíamos adoptar en nuestros flujos de trabajos, tanto para la generación de betas para QA como para liberar versiones a producción .
Gracias a que es un proyecto bastante activo en github, promete que su potencial seguirá creciendo con el tiempo.
Lo mas irónico del caso es que este proyecto ahora le pertenece a google y soluciona temas del mundo apple. ¯\_(ツ)_/¯

Bonus Track

  • Fastlane fue desarrollado por Felix Krause .
  • Fastlane es parte de Fabric un proyecto que se basa en mejorar los flujos del desarrollo mobile (fastlane) y además de ofrecer analíticas sobre los crashes (crashlytics) que tiene tu aplicación, entre muchas cosas más, es un proyecto que vale la pena probar.
  • Fastlane fue adquirido por Twitter para ser parte de Fabric en primera instancia, actualmente le pertenece a Google.

Developer & More