web-dev-qa-db-fra.com

Créer une application iOS avec Fastlane dans Docker

J'essaie de rationaliser mes versions de développement iOS et de lire à propos de Docker.

Si je le comprenais bien, je pourrais créer une image qui inclurait toutes les dépendances et mes collègues développeurs pourraient simplement la tirer et la construire à l'intérieur.

Le point est maintenant, cela fonctionne-t-il également avec Fastlane (qui utilise les outils Xcode cli je pense) et "Docker pour Mac"?

De plus, j'utilise React-Native, qui semble démarrer un deuxième processus pour regrouper le JavaScript qui sera inclus dans la version native plus tard et je lis que Docker ne permet qu'un seul processus, est-ce un problème ?

8
K..

Le problème avec l'utilisation de Docker est que même si vous utilisez Docker pour mac, vous n'aurez pas accès aux images basées sur macOS. Docker s'exécute dans une machine virtuelle légère appelée xhyve - au moins si vous installez docker via le package Docker pour Mac - qui exécute Linux sur votre mac.

Essentiellement, cela signifie que votre conteneur Docker sera limité à une fonctionnalité non-Xcode. Voici ce que vous ne pourrez certainement pas faire, du moins pas sans une quantité de travail non négligeable:

  • Compilez le code natif de votre application
  • Prenez des captures d'écran de votre application ou exécutez votre application dans le simulateur
  • Signature de l'application terminée avec codesign d'Apple

Voici des choses pour lesquelles vous pourriez potentiellement utiliser votre conteneur Docker:

  • Construire le code JS (je suppose, puisque RN devrait fonctionner sur Linux)
  • Téléchargement de votre application avec iTMSTransporter (c'est-à-dire en utilisant deliver de fastlane)
  • Téléchargement/création de certificats, de profils d'approvisionnement et de certificats Push (c'est-à-dire match, cert, pem et sigh) de fastlane
  • Travailler avec git

Dans l'ensemble, vous allez probablement être très limité. Au lieu de cela, il serait conseillé d'utiliser des choses comme Gemfile et Brewfile pour lister toutes vos dépendances, et avoir un petit setup.sh script qui exécute brew bundle et bundle install pour les installer sur les machines de vos collègues. Vous pouvez également le configurer pour exécuter ceux-ci pendant la construction (avec les phases de construction de script de Xcode), afin que personne ne puisse accidentellement oublier d'installer quelque chose qui est nécessaire pour la construction.

Cela étant dit, il y a une image de docker Fastlane sur laquelle on travaille ici qui est également disponible sur le Docker Hub . Notez qu'il n'a été testé que pour exécuter les tests fastlane (qui ne dépendent pas d'un logiciel uniquement macOS), il ne prétend donc pas fonctionner de manière fiable.

Je lis Docker ne permet qu'un seul processus

Docker autorise plusieurs processus, il n'autorise tout simplement pas plus d'un processus principal. Si votre processus principal arrête tout le reste et que le conteneur s'arrête avec. Si vous souhaitez simplement l'utiliser pour installer des dépendances afin de pouvoir exécuter des commandes uniques qui les utilisent, au lieu d'héberger un service de longue durée, vous pouvez toujours le faire en utilisant docker run:

docker run <repo/image:tag> <your_command>

Ou lancez un shell interactif dans le conteneur:

docker run -it <repo/image:tag> /bin/bash
20
milch