Montage d’un environnement d’intégration continue local pour les applications mobiles (iOS, Android)

Index de contenu

  1. Introduction
  2. Environnement
  3. Paramètres
  4. BOTS XCODE
  5. JENKINS
  6. SDK Android
  7. Configuration de Jenkins
  8. Conclusions

Introduction

Aujourd’hui, il existe de nombreuses solutions pour fournir les développements mobiles d’un environnement d’intégration continue. Dans de nombreux cas, le plus simple, moins coûteux, plus maintenu et plus rapide consiste à utiliser des services tiers (SaaS) tels que Buddybuild, etc., qui relient notre référentiel de nuages.

pour le bien ou pour le mal , en fonction du client avec lequel nous sommes touchés, nous ne pourrons peut-être pas utiliser aucun de ces services, bien parce que le client lui-même n’approuve pas ou par conséquent de ses propres restrictions de sécurité (un référentiel privé sans l’extérieur et sans autorisation de Connectez-vous via VPN par exemple). Avant ce panorama, nous avons deux options:

  • ne pas avoir d’intégration continue (option mauvaise)
  • Exécutez notre propre environnement d’intégration continue (moins mauvaise option)

Environnement

Le didacticiel est écrit à l’aide de l’environnement suivant:

  • Matériel: Mac Mini (2018) (3 GHz Intel Core I5, 16 Go 2667 MHz DDR4)
  • Système d’exploitation: Mac OS X CATALINA 10.15.3
  • JENKINS 2.204.5
  • FASTLANE 2.143.0
  • XCode 11.3 .1
  • Android SDK (Outils de ligne de commande) Derniers

Paramètres

Dans le cas du backvice de développement n’est pas si inhabituel que le SOËT Équipes Ses propres environnements d’intégration continue (dans les toxicomanes que nous avons quelques tutoriels sur Jenkins), mais dans le cas d’un développement mobile, il y a toute autre limitation.

Notre application a des versions natales dans iOS et Android. Afin de compiler l’application Android, nous devrons installer le SDK sur notre serveur. Dans le cas de l’IOS, nous avons également besoin de oui ou de oui, notre serveur exécute des macos, il est impossible de compiler aujourd’hui une application iOS à partir d’un autre système d’exploitation. Ainsi, un Mac Mini a été décidé en tant que serveur d’intégration continue pour l’application Android et l’IOS. Pour cela, sur notre Mac Mini, nous avons besoin des éléments suivants:

  • xcode: il sera responsable de la compilation de l’application iOS et agira en tant que serveur Xcode pour réussir les tests.
  • Android SDK: nécessaire pour pouvoir compiler l’application Android
  • Jenkins: sera utilisée pour transmettre les tests Android et en général pour automatiser toute autre tâche, telle que la génération nocturne bêta.
  • Fastlane: utilitaire très connu dans le monde mobile, en particulier dans IOS pour aider à effectuer des tâches. Dans notre cas, nous l’utilisons pour générer la version bêta d’iOS et Android et de les déployer à notre plate-forme de distribution bêta.

BOTS XCODE

Pour transmettre les tests iOS, dans Notre cas, nous avons choisi en utilisant les robots Xcode. Les robots Xcode ont un comportement particulier, d’une part le serveur (dans notre cas, le Mac Mini) sera responsable de la compilation et de l’exécution des tests, mais le bot est créé à partir de notre équipe.

La première chose que nous Devrait-il faire est activer le serveur Xcode sur notre serveur, car nous ouvrons Xcode – > Préférences – > serveur & bots et là, nous activons le serveur.

"XcodeServer"

Une fois que Xcode Server est activé, Dans les locaux, nous définissons Xcode pour connecter notre serveur en Xcode – > Préférences – >

"XcodeServer"

avec ceci, nous pouvons déjà créer le bot de notre machine locale dans le produit – > Créer un bot, quel assistant cela nous guidera pas à pas. Il nous demandera que si nous voulons ajouter le serveur en tant que membre de l’équipe pour gérer la signature, le référentiel, le schéma, les actions à effectuer (tests, couverture, etc.) et les actions ultérieures.

Jenkins

Pour simplifier nos vies, la chose la plus facile est dans le cas de MacOS est d’installer Jenkins avec Brew.

Brew Installez Jenkins

Nous peut modifier les paramètres (IP, port, etc.) du fichier:

/usr/local/cellar/jenkins/2.xx/homebrew.mxcl.jenkins.plist (remplacez 2.xx par la correspondance correspondante version)

Si nous voulons également que vous exécutions en vous connectant, nous pouvons également l’ajouter sous forme de démon avec:

Services de brassage Démarrer Jenkins

une fois installé devrait être capable d’accéder à Jenkins de notre navigateur (par défaut http://localhost:8080).

La première fois que nous commençons à Jenkins, nous devrons suivre les étapes qui nous indiquent à compléter l’installation.

SDK Android

Avant que Jenkins puisse passer les tests Android, nous devons installer le SDK Android. Il n’est pas nécessaire de télécharger Android Studio complet, nous ne sommes intéressés que par le SDK. Pour cela, nous accédons à https://developer.android.com/studio#downloads et dans « Options de téléchargement », sous « Outils de ligne de commande uniquement », nous pouvons télécharger le zip correspondant pour MacOS.
Une fois téléchargé ce que nous avons décompressé où nous Convu (dans notre cas, nous l’avons laissé à Jenkins ~ / .jenkins). Nous devrons accepter les licences, car nous avons ouvert un terminal, nous avons déménagé dans le répertoire SDK, dans notre cas:

~ / .jenkins / android_sdk / outils / bac

Et nous exécutons:

./ sdkmanager -lichens

nous demandera si nous acceptons les conditions. Ceci est nécessaire ou s’il ne manquera pas lorsque nous essayons de compiler notre application Android de Jenkins. Avec cela, nous devrions déjà être en mesure de créer nos emplois de Jenkins pour réussir les tests.

Configuration de Jenkins

Nous commencerons à créer la variable globale Android_Home. Pour ce faire de gérer Jenkins – > Configurer le système, sous Propriétés globales Nous créons une variable Android_Home pointant vers notre SDK.

"Jenkins"Jenkins »

Nous veillons également à faire installer les plug-ins de la graderie, le plug-in HTML Publisher et le Text-Finder de Gérer Jenkins – > Plugins. En outre, nous pouvons également installer un plugin pour notifier sur les résultats des travaux en fonction de nos préférences / ressources (par exemple, Slack).

Avec cela, nous devrions déjà créer notre travail, pour cela des Jenkins ‘ Dashboard principal, cliquez sur Nouvel élément – > Projet Freestyle. Nous configurons le référentiel, les déclencheurs de construction et appuyez sur Ajouter une étape de construction – > Invoquez le script. Nous appelons l’enveloppe des grades et indiquons la tâche des grades avec laquelle passer les tests.

"Jenkins"

Pour afficher les résultats De manière plus confortable, dans des actions post-construction, nous ajoutons des rapports HTML de publication, indiquant le dossier de notre projet dans lequel les résultats des tests sont stockés.

"Report"

Enfin, dans notre cas pour réussir tous les tests et ne pas interrompre la première décision, dans notre fichier Build.Gradle, nous avons configuré ce qui suit:

coque

1
2
3
5
6
7

UNITESTS.EURREURNDEFAULLESVALUES = VRAI
Unesstets.all {
seignoreFailures (true)
}

Ceci, bien que sur une partie permet à Jenkins Job Test de tous les tests et dites-nous ce qu’ils se produisent et qui ne rend pas le travail Marque aussi stable, même si les tests échouent. En tant que solution rapide, nous choisissons d’utiliser le plug-in Jenkins « Texte-Finder » pour identifier le moment où tous les tests n’ont pas été passés.

"Finder"

Avec cela, nous pourrions déjà passer les tests sur notre application Android.

Conclusions

Devoir vous configurer votre propre environnement d’intégration continue est un processus assez ardu. , Compliqué et nécessite également l’assemblage de la patience et de la maintenance périodique. Dans la partie positive, c’est qu’il offre beaucoup de flexibilité, car vous pouvez utiliser n’importe quel outil que vous avez à portée de main pour automatiser ces tâches que l’on est proposée.

si pour obtenir le client le client A un mandat de proxy de difficulté à atteindre sur la place, bien qu’il puisse être labelé avec des outils tels que Squidman afin de ne pas avoir de scripts à travers plusieurs scripts différents.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *