2016-05-11 5 views
6

Ich habe ein Xcode-Projekt mit sechs Zielen, jedes Ziel wird gemacht, um eine separate App zu erstellen. Ich versuche Fastlane einzurichten, um mir bei der Veröffentlichung dieser Apps zu helfen.Wie kann ich Metadaten für mehrere Ziele liefern (fastlane)?

Fastlane docs suggest mit .env Dateien, um mehrere Ziele zu handhaben (können Sie app_identifier, team_name usw. in verschiedenen .env Dateien angeben, und dann, zum Beispiel, rufen fastlane appstore --env ENV_NAME_HERE). Jedoch kann ich nicht herausfinden, wie man deliver richtig einrichtet.

deliver init lädt standardmäßig Metadaten nur für ein Ziel herunter. Ich muss Metadaten für alle meine Ziele in verschiedene Verzeichnisse herunterladen (und diese Verzeichnisse dann natürlich zum Hochladen von Daten verwenden). deliver download_metadata akzeptiert nicht den Parameter --env (meine Deliverfile hängt von env-Dateien ab). Ich habe versucht fastlane deliver --env, aber es scheint nur eine Kurzschrift für deliver, so funktioniert es auch nicht.

Ich glaube, ich konnte einfach manuell deliver mit unterschiedlichen --metadata_path Parametern ausgeführt (und alle anderen Parameter, da mein Deliverfile ungültig ist, weil es auf env-Dateien hängt), und dann später angeben Verzeichnisse Deliverfile + .env Dateien. Aber da ich Deliverfile und .env-Dateien bereits eingerichtet habe (jetzt verwende ich deliver, um nur die Binärdatei hochzuladen), hoffte ich, dass es einen besseren Weg gibt. Ist da?

P.S. Dies ist ein großes Legacy-Projekt, also wäre es großartig, es in sechs verschiedene Projekte zu teilen, aber das ist leider keine Option.

Antwort

7

Ich habe auch damit zu kämpfen und die Einrichtung der Übermittlung ist einfach mit den .env-Dateien.

Aber das Abrufen der Anfangsdaten ist schwierig, aber nicht unmöglich.

die Metadaten zu packen es diesen Befehl lautete:

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

Und für die screenshots:

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

Vielen Dank! Scheint, dass es der einzige Weg für jetzt ist. – FreeNickname

+0

Ich habe es noch nicht ausprobiert, aber vielleicht kannst du sogar "-m" und "-W" übergeben und die init-Aktion verwenden, um zu liefern. Ich verwende diese Methoden in einem Skript und schreibe die .env-Datei. – rckoenes

+0

Ich werde versuchen, danke für die Problemumgehung! – FreeNickname

3

bis zu @rckoenes Antwort hinzu:

1) Erstellen Sie eine .env.yourEnvName Datei mit dieser Information (als Beispiel):

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

2) eine Spur wie folgt aus:

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) Rufen Sie fastlane wie folgt aus:

fastlane metadata --env yourEnvName 

Auf diese Weise ist es ein wenig sauberer, und Sie halten die Vars in der .env Datei . Für die Automatisierung dieses Aufrufs für mehrere Ziele, siehe: https://docs.fastlane.tools/faqs/#multiple-targets-of-the-same-underlying-app

+0

Ich habe diese Lösung versucht, aber ich bekomme immer "fehlt -a im Terminal".meine Spur desc „Download Metadaten jedes Ziel“ Spur ist folgende: Metadaten sh tun ('fastlane liefern download_metadata -m ‚$ DLV_METADATA_PATH‘ -u $ DLV_ITUNESCONNECT_USERNAME -a $ DLV_BUNDLE_ID') Ende und folgende ist mein .env Datei DLV_METADATA_PATH =./Ziele/NextSampleFastlaneTesting3/Metadaten DLV_ITUNESCONNECT_USERNAME=****@****.com DLV_BUNDLE_ID = com. ****. NextSampleFastlaneTesting3 Habe ich etwas falsch gemacht? –