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 ?
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:
codesign
d'AppleVoici des choses pour lesquelles vous pourriez potentiellement utiliser votre conteneur Docker:
deliver
de fastlane)match
, cert
, pem
et sigh
) de fastlaneDans 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