2016-05-11 2 views
6

J'ai un projet Xcode avec six cibles, chaque cible est faite pour construire une application distincte. J'essaie de configurer fastlane pour m'aider dans la publication de ces applications.Comment faire livrer (fastlane) des métadonnées de téléchargement pour plusieurs cibles?

Fastlane docs suggest à l'aide de fichiers .env afin de gérer plusieurs cibles (vous pouvez spécifier app_identifier, team_name, etc. dans différents fichiers .env, puis, par exemple, appeler fastlane appstore --env ENV_NAME_HERE). Cependant, je ne peux pas comprendre comment configurer correctement deliver. Télécharge les métadonnées pour une cible uniquement par défaut. J'ai besoin de télécharger des métadonnées pour toutes mes cibles vers différents répertoires (et ensuite utiliser ces répertoires pour télécharger des données, évidemment). deliver download_metadata n'accepte pas le paramètre --env (mon fichier Deliver dépend de fichiers env). J'ai essayé fastlane deliver --env, mais il semble être juste un raccourci pour deliver, donc ça ne marche pas non plus.

Je suppose que je pouvais exécuter manuellement deliver avec différents paramètres --metadata_path (et tous les autres paramètres depuis mon Deliverfile est invalide, car elle dépend de fichiers env), puis spécifiez plus tard répertoires à l'aide des fichiers Deliverfile + .env. Mais depuis que j'ai les fichiers Deliverfile et .env déjà installés (maintenant j'utilise deliver pour télécharger le binaire seulement), j'espérais qu'il y aurait un meilleur moyen. Y a-t-il?

P.S. Il s'agit d'un grand projet hérité, donc le découper en six projets différents serait génial, mais ce n'est pas une option, malheureusement.

Répondre

7

J'ai également eu des problèmes avec cela et la mise en place de l'envoi est facile en utilisant les fichiers .env. Mais la récupération des données initiales est difficile, mais pas impossible.

Pour saisir les métadonnées, il a couru cette commande:

fastlane deliver download_metadata -m "./Targets/Release/Metadata" -u "[email protected]" -a "com.example.ios" 

Et pour les captures d'écran:

fastlane deliver download_screenshots -w "./Targets/Release/Screenshots" -u "[email protected]" -a "com.example.ios" 
+0

Merci! Il semble que c'est le seul moyen pour maintenant en effet. – FreeNickname

+0

Je n'ai pas encore essayé, mais peut-être pouvez-vous même passer les '-m' et' -W' et utiliser l'action init sur deliver. J'utilise ces méthodes dans un script et j'écris le fichier .env. – rckoenes

+0

Je vais essayer, merci pour la solution de contournement! – FreeNickname

3

Ajout à @rckoenes réponse:

1) Créer un .env.yourEnvName fichier avec cette info (à titre d'exemple):

DLV_METADATA_PATH="../Targets/Your_Target/Metadata" 
DLV_ITUNESCONNECT_USERNAME="[email protected]" 
DLV_BUNDLE_ID="com.yourCompany.yourTarget" 

2) Créer une voie comme celui-ci:

desc "Download metadata" 
lane :metadata do 
    sh('fastlane deliver download_metadata -m "$DLV_METADATA_PATH" -u $DLV_ITUNESCONNECT_USERNAME -a $DLV_BUNDLE_ID') 
end 

3) Appel Fastlane comme ceci:

fastlane metadata --env yourEnvName 

De cette façon, il est un peu plus propre, et vous gardez les vars dans le fichier .env . Pour automatiser cet appel pour plusieurs cibles, veuillez vous référer à: https://docs.fastlane.tools/faqs/#multiple-targets-of-the-same-underlying-app

+0

J'ai essayé cette solution mais je reçois toujours "missing -a in terminal".À la suite de ma voie desc voie « Télécharger les métadonnées de chaque cible » : les métadonnées font sh ('Fastlane livrer download_metadata -m « $ DLV_METADATA_PATH » -u $ DLV_ITUNESCONNECT_USERNAME -a $ DLV_BUNDLE_ID') fin et voici mon .env fichier DLV_METADATA_PATH =./cibles/NextSampleFastlaneTesting3/métadonnées DLV_ITUNESCONNECT_USERNAME=****@****.com DLV_BUNDLE_ID = com. ****. NextSampleFastlaneTesting3 Est-ce que je fais quelque chose de mal? –