Cómo hacer un sistema de compilación bajo demanda de iOS con Jenkins y Fastlane

Este artículo trata sobre la creación de compilaciones de iOS a través de Jenkins BOT, de forma remota, sin la necesidad de un desarrollador.

Antes de empezar, quiero decir que este es mi primer artículo. Así que siéntete libre de dejar un comentario si se puede mejorar algo :)

¿Por qué es esto una buena idea?

Cuando un desarrollador crea una función, la prueba antes de llevarla a producción. Por lo tanto, una compilación debe compartirse con el equipo de control de calidad con algunas configuraciones de prueba.

Xcode (el IDE) toma una cantidad significativa de tiempo para compilar y generar esta compilación. Esto significa que cualquier persona que necesite la compilación tendría que instalar el IDE, clonar el repositorio, crear una identidad de firma y un certificado y luego crear la compilación ellos mismos. O dependa del desarrollador para crear uno para ellos.

Durante el proceso de creación de la compilación, el IDE no se puede utilizar. Esto afecta gravemente la productividad del desarrollador. En mi empresa, el tiempo medio de creación de un .ipa es de unos 20 minutos. En promedio, un desarrollador realiza de 2 a 3 compilaciones diarias.

Esto significa que se desperdician 5 horas de trabajo a la semana.

Pero, ¿y si hubiera un sistema automatizado que pudiera generar las compilaciones por sí solo? Esto liberaría a los desarrolladores de esta responsabilidad. También haría posible que cualquiera pudiera obtener una construcción fácilmente.

Jenkins es una de las soluciones a nuestro problema.

Hacer que las compilaciones estén fácilmente disponibles para los probadores y desarrolladores garantiza que las personas puedan probar las características más rápido y enviarlas a producción más fácilmente. Esto mejora la productividad de los equipos de desarrollo. También mejora la calidad de los productos enviados a producción.

Empecemos ahora.

Prerrequisitos

Necesitarás:

  • MacOS Machine (es mejor ejecutarlo en productos Mac)
  • 10 GB de espacio en disco (para Jenkins)
  • Java 8 instalado (ya sea un JRE o un Java Development Kit (JDK) está bien)

    //www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Complementos adicionales que se instalarán

  • cerveza casera
  • wget
  • Complemento RVM

    Guía de instalación

    //rvm.io/rvm/security

Cree una rama con un archivo con el nombre Jenkinsfilecon código de muestra:

node {

sh ‘echo HelloWorld’

}

Vamos a llamarlo integración de Jenkins . Volveré a esto más tarde.

  • Instale Xcode en su máquina desde la App Store
  • Instale Fastlane en su máquina. Jenkins utilizará internamente comandos fastlane para generar compilaciones.

Ahora veámoslo paso a paso.

Paso 1. Instale Jenkins en su máquina

Puede instalarlo en una MacBook o mac-mini. Se prefiere Mac-mini ya que se puede mantener vivo.

Descarga Jenkins -> //jenkins.io/

Ejecute java -jar jenkins.war --httpPort = 8080 en la línea de comandos. Si recibe un error en la terminal, pruebe con un puerto diferente (por ejemplo, 9090) ya que a veces algunos puertos no están disponibles.

Vaya a // localhost: 8080 y siga las instrucciones para completar la instalación.

Luego agregue las credenciales de administrador y no las olvide (como hice yo: P). Más tarde, puede ir a Jenkins> Administrar Jenkins> Administrar usuarios y hacer los cambios si es necesario.

Paso 2. Creación de su primera canalización

Cree un nuevo trabajo y elija Pipeline Project .

Para verificar su proyecto, en la sección Pipeline, en Definición, elija Pipeline Script from SCM y en SCM elija Git

Luego agregue la URL de su repositorio y agregue las credenciales si es un repositorio privado. En las ramas para construir, agregue * / jenkins-integration,la rama que creamos anteriormente.

Asegúrese de que Script Path sea Jenkinsfile que hemos creado en nuestra nueva rama. Todos los scripts se escribirán en este archivo Jenkins.

Haga clic en Guardar y Jenkins escaneará automáticamente su repositorio con la rama mencionada y ejecutará el script Jenkinsfile.

Ahora estamos listos para configurar nuestro Jenkinsfile para crear compilaciones

Paso 3. Agregar parámetros al trabajo

Se requiere la entrada del usuario para

  • rama
  • entorno (prueba o prod)

Para eso, necesitamos configurar nuestro proyecto para tomar parámetros de entrada para un trabajo.

Vaya a la sección Configurar y marque Este proyecto está parametrizado .

Luego seleccione agregar parámetro y agregue el mismo en consecuencia.

Cuando haga clic en guardar, verá una nueva sección en el lado izquierdo - & g t; Construya con Paramet ers. Esta será la interfaz de usuario para realizar compilaciones.

Estos parámetros se utilizarán en nuestro script de Jenkins.

Paso 3. Configurar el script de Jenkins

Creará varios pasos en nuestro archivo Jenkins, cada uno con una responsabilidad, y creará una interfaz de usuario agradable cuando se compile.

Vaya a su archivo Jenkins y reemplace el script con lo siguiente:

Primero, revise la rama a través del parámetro que agregamos anteriormente. Agregue su repositorio y token de GitHub.

Ahora el token de GitHub no debería ser visible para otros. Para hacer esto, vaya a Administrar Jenkins - & g t; Configure el sistema -> propiedades globales y agregue el token github como variable de entorno.

Luego, invoque el script para cambiar el entorno.

A continuación, invoque fastlane para limpiar (eliminar datos derivados, limpiar, eliminar archivos .dsym, etc.).

Si se requiere la firma de código, hágalo a continuación utilizando ad-hoc . Puede utilizar el desarrollo o la tienda de aplicaciones según sus necesidades.

A continuación, cree compilaciones con el comando gym en Fastlane.

Paso 4. Ejecute el trabajo

Ahora nuestro guión está listo. Vaya a Jenkins y abra Compilar con parámetros.

Comenzará a ejecutar el script y creará una interfaz de usuario agradable con varios pasos como se menciona en Jenkinsfile.

Cuando se complete el trabajo, vaya al proyecto Users / agammahajan / .jenkins / workspace / iOS_Build_Systems

y verá que se ha creado el .ipa. ¡Voilà!

Ahora puedes compartir esta compilación con otros. Puede usar el complemento de Slack para cargar las compilaciones en Slack si lo desea.

Terminando

Entonces, para concluir aquí, podemos ver lo fácil que es configurar un bot automatizado que permite a cualquier persona activar compilaciones en solo 2 pasos: Dar Branch-> Test Environment-> Done.

Esto nos ha ayudado a mí y a mis compañeros desarrolladores a mejorar la productividad y realizar envíos más rápido. También ha ayudado al equipo de control de calidad, para que no tengan que depender de los desarrolladores cada vez que necesitan probar algo. Espero que también lo beneficie a usted y a su empresa.

A partir de aquí, las posibilidades son infinitas.

  1. Puede realizar trabajos programados para generar compilaciones nocturnas.
  2. Sube compilaciones directamente a la App Store.
  3. Almacene en caché las compilaciones, de modo que las compilaciones con la misma configuración no se vuelvan a generar.
  4. Distribuir el IPA en casa para la instalación OTA (Over the air).
  5. Cree una canalización de CI-CD para ejecutar pruebas automatizadas en cada confirmación y prepararlas para la producción.