Montar un ambiente de integración continua local para aplicacións móbiles (iOS, Android)

Índice de contido

  1. introdución
  2. ambiente
  3. Configuración
  4. xcode bots
  5. jenkins
  6. android sdk
  7. Configurar Jenkins
  8. Conclusións

Introdución

Hoxe hai moitas solucións para proporcionar os desenvolvementos móbiles dun ambiente de integración continua. En moitos casos, o máis sinxelo, menos custoso, máis mantible e máis rápido é usar servizos de terceiros (saas) como Buddybuild, etc., que se conectan co noso repositorio de nubes.

para o ben ou para o mal , dependendo do cliente co que somos tocados, é posible que non poidamos usar ningún destes servizos, pois o propio cliente non o aproba ou, en consecuencia, das súas propias restricións de seguridade (un repositorio privado sen acceso exterior e sen permiso para Conéctate a través de VPN por exemplo). Antes de que Panorama teñamos dúas opcións:

  • Non ten integración continua (opción mala)
  • executar o noso propio ambiente de integración continua (menos mala opción)

Medio ambiente

O tutorial está escrito usando o seguinte ambiente:

  • Hardware: Mac Mini (2018) (3 GHz Intel Core i5, 16 GB 2667 MHz DDR4)
  • Sistema operativo: Mac OS X Catalina 10.15.3
  • Jenkins 2.204.5
  • Fastlane 2.143.0
  • Xcode 11.3 .1
  • Android SDK (Ferramentas de liña de comandos) Últimas opcións

Configuración

No caso do backend de desenvolvemento non é tan inusual como o Monten Equipos Os seus propios ambientes de integración continua (en adictos temos algúns tutoriais sobre Jenkins), pero no caso do desenvolvemento móbil hai calquera outra limitación.

A nosa aplicación ten versións nativas en iOS e Android. Para compilar a aplicación Android, necesitaremos ter o SDK instalado no noso servidor. No caso de iOS, tamén necesitamos si ou si, o noso servidor executa MacOS, é imposible compilar hoxe calquera aplicación de iOS doutro sistema operativo. Deste xeito, un Mac Mini foi decidido como un servidor de integración continua tanto para a aplicación Android como para iOS. Para iso, no noso Mac Mini necesitamos o seguinte:

  • Xcode: será responsable da compilación da aplicación iOS e actuará como servidor Xcode para pasar as probas.
  • Android SDK: necesario para poder compilar a aplicación Android
  • Jenkins: será usado para pasar as probas de Android e, en xeral, automatizar calquera outra tarefa, como a xeración nocturna beta.
  • Fastlane: utilidade moi coñecida no mundo móbil, especialmente en iOS para axudar a realizar tarefas. No noso caso, usámolo para xerar a beta de iOS e Android e despregaros á nosa plataforma de distribución beta.

xcode bots

para pasar as probas de iOS, en O noso caso, escollemos usando os bots Xcode. Os bots Xcode teñen un comportamento peculiar, por unha banda, o servidor (no noso caso o Mac Mini) será o responsable de compilar e executar as probas, pero o bot é creado a partir do noso equipo.

O primeiro que nós debería ter que facer é activar o servidor Xcode no noso servidor, por iso abre Xcode – > Preferencias – > servidor & bots e alí activamos o servidor.

"XcodeServer"

Unha vez activado o servidor Xcode, No local definimos Xcode para conectarse co noso servidor en Xcode – > Preferences – > Contas

"XcodeServer"

Con isto xa podemos crear o bot da nosa máquina local no produto – > Crear bot, en que un asistente que nos guiará paso a paso. Pediranos que, se queremos engadir o servidor como membro do equipo para xestionar o asinado, o repositorio, o esquema, as accións que se realizarán (probas, cobertura, etc.) e as accións posteriores.

jenkins

Para simplificar as nosas vidas, o máis sinxelo é que no caso de MacOS é instalar Jenkins con Brew.

Brew instalar Jenkins

Nós pode cambiar a configuración (IP, porto, etc.) do ficheiro:

/usr/local/cellar/jenkins/2.xx/homebrew.mxcl.jenkins.plist (substituír 2.xx pola correspondente versión)

Se tamén queremos que executemos iniciando sesión, tamén podemos engadilo como Daemon con:

Brew Services Start Jenkins

Unha vez instalado debería poder acceder a Jenkins desde o noso navegador (predeterminado http://localhost:8080).

A primeira vez que comezamos a Jenkins teremos que seguir os pasos que nos indican a instalación.

Android SDK

Antes de que Jenkins poida pasar as probas de Android, debemos instalar o SDK de Android. Non é necesario descargar o estudo de Android Studio, só estamos interesados no SDK. Para iso, accedemos https://developer.android.com/studio#downloads e, en “Opcións de descarga”, en “Ferramentas de liña de comandos só” podemos descargar o zip correspondente para MacOS.
Unha vez que descargamos o que desencadeamos onde nós Convenve (no noso caso que o deixamos en Jenkins ~ / .jenkins). Teremos que aceptar as licenzas, por iso abrimos un terminal, mudámonos ao directorio SDK, no noso caso:

~ / .jenkins / android_sdk / ferramentas / bin

E executamos:

./ sdkmanager -lichenses

preguntaranos se aceptamos as condicións. Isto é necesario ou se non fallará cando tratamos de compilar a nosa aplicación de Android de Jenkins. Con isto, xa poderiamos crear os nosos traballos de Jenkins para pasar as probas.

Configurar Jenkins

Comezaremos a crear a variable global Android_Home. Para facer isto de xestionar Jenkins – > Sistema de configuración, baixo as propiedades globais, creamos unha variable de Android_Home apuntando ao noso SDK

"Jenkins"

Tamén aseguramos de ter instalados os plugins de Gradle, plugin de editor de HTML e Buscador de texto de Jenkins – >. Ademais, tamén podemos instalar un complemento para notificar aos resultados dos traballos de acordo coas nosas preferencias / recursos (por exemplo, Slack).

Con isto xa deberiamos crear o noso traballo, por iso desde a Jenkins ‘ Taboleiro principal, faga clic en Novo elemento – > Freestyle Project. Configuramos o repositorio, os desencadenadores de construción e prema Engadir build Step – > invocar script. Marcamos o envoltador de Use Gradle e indique a tarefa de graduación coa que pasar as probas.

"Jenkins"

Para mostrar os resultados De xeito máis cómodo, en accións de post-build, engadimos publicar informes HTML, indicando o cartafol do noso proxecto no que se almacenan os resultados das probas.

"Report"

Finalmente, no noso caso para pasar todas as probas e non interromper a primeira decisión, no noso ficheiro build.gradle configuramos o seguinte:

Shell

1
2
3
5
6
7

Unittests.reurndefaultvalues = True
Unittets.all {
SETIGNOREFAILURES (TRUE)
}

Isto aínda que nunha parte permite que Jenkins funcione todas as probas e díganos o que ocorren e que non fan que o traballo marca sexa tan estable aínda que as probas fallan. Como unha solución rápida, decidimos usar o complemento de Jenkins “Finder-Finder” para identificar cando todas as probas non pasaron.

"Finder"

Con isto, xa poderiamos pasar as probas na nosa aplicación de Android.

Conclusións

Tendo que configurar o seu propio ambiente de integración continua é un proceso bastante arduo , Complicado e tamén require a montaxe de paciencia e mantemento periódico. Na parte positiva é que ofrece moita flexibilidade, xa que pode usar calquera ferramenta que teña á súa disposición para automatizar as tarefas que se propón.

Se para obter o cliente o cliente ten un proxy que a dificultade sobe á praza, aínda que pode ser cultivada con ferramentas como Squidman para non ter scripts a través de varios scripts diferentes.

Deixa unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *