2017-06-15 7 views
1

Ich benutze fastlane für meine iOS-Anwendung. In diesem Fall habe ich ein xcode-Projekt mit mehreren Zielen. Daher möchte ich einige andere Variablen in fastlane verwenden. Die Variablen werden jedoch nicht initialisiert.Fastlane Umgebungsvariablen nicht initialisieren --env

Ich habe benutzerdefinierte .env-Dateien für jedes Ziel eingerichtet. Zum Beispiel der .env Datei von Target1:

ENV_TARGET_NAME=MyAppName 
ENV_TARGET_NAME_SHORT=MyAppNameShort 

Die .env Datei wird .env.Target1 genannt und ist in dem fastlane Ordner festgelegt. Ich habe bereits versucht zu sehen, ob dies funktioniert, indem ich die Datei in den Stammordner meines Projekts platziere.

Meine fastlane Dateien sieht wie folgt aus:

fastlane_version "1.109.0" 

before_all do 
    ensure_git_status_clean 
    skip_docs 
end 

lane :QA_all do 
    sh "fastlane QA --env Target1" 
    sh "fastlane QA --env Target2" 
    sh "fastlane QA --env Target3" 
end 

lane :accept_all do 
    sh "fastlane QA --env Target1" 
    sh "fastlane QA --env Target2" 
    sh "fastlane QA --env Target3" 
end 

lane :live_all do 
    sh "fastlane QA --env Target1" 
    sh "fastlane QA --env Target2" 
    sh "fastlane QA --env Target3" 
end 

desc "Builing version with TEST environment" 
lane :QA do |options| 
    target_name = ENV['ENV_TARGET_NAME'] 


/* Rest of the file */ 

- Aktualisieren

Optionen mit [: target_name] wird, um den Zielnamen zu bekommen. Ich sende dies jedoch an eine .sh-Datei, um zum ipa in den richtigen Ordner zu wechseln.

sh "sh ./scripts/ipa_deployment.sh #{version_number} #{target_name} 

Als ich die target_name wie „MyAppName“ fest einprogrammiert gesetzt werde ich die Variable innerhalb der .sh-Datei. Wenn ich es jedoch über die Optionen [: Zielname] einstelle, ist die Variable leer. Jemand eine Idee, warum das passiert?

+1

Ich verstehe nicht wirklich, was Ihr Ziel ist, aber es scheint mir, dass Sie die Spur ': QA' mit den gewünschten Optionen aufrufen sollten. Zum Beispiel 'Spur: QA_all tun QA {target_name: Target1} QA {target_name: Target2} QA {target_name: ziel3} Ende Spur: QA tun | Optionen | setzt "mach was du willst mit # {options [: target_name}" end' –

+0

Mein Ziel ist es, den Zielnamen aus der Anwendung zu verwenden, um die .ipa in einen Ordner zu schreiben, abhängig von diesem Wert. Daher legt jedes Ziel die .ipa-Datei in einem Ordner mit dem Namen target ab. Mein Code funktioniert, wenn ich target_name hartcodierte, aber nicht den Wert aus der Umgebungsdatei abruft. Wie ich verstehe Es wäre möglich, etwas wie '# {options [: target_name}' zu verwenden, um den Zielnamen zu erhalten? Ich werde es ausprobieren und kommentieren Sie hier wieder – Maurice

+0

BTW, ich falsch eingegeben, wie dies zu tun, um die Option im Code zu bekommen, benötigen Sie nur 'Optionen [: Zielname]'. Die '# {options [: target_name]}' soll es in die Ruby-Zeichenfolge bekommen. –

Antwort

0

Sie tun es falsch. Als Dokumentation sagt https://docs.fastlane.tools/advanced/#environment-variables Es ist Lasten erste .env und dann .env.myTarget

Aber schauen Sie, was Sie, Ihre Lauf fastlane QA_all (zb) Diese Instanz von fastlane tun hat überhaupt keine env! Deshalb haben Sie eine leere Zeichenfolge.

Selbst, wenn Sie sh ... tun dies auf einem anderen laufen, ich bin nicht sicher, Prozess? ¿?, der Ausgang wird nicht das gleiche sein wie die Sie fastlane gestartet.

Wenn Sie 3 Construction/Deploy-Skripts für 3 verschiedene Targets (Apps, die ich verstehe) ausführen möchten. Sie sollten besser für ein Skript gehen, wo Sie Ihre 3 Fastlane-Konfigurationen aufrufen.

Ich habe es nicht versucht, aber sollte auf dem Skript serialisiert werden, starten Sie Ihre erste fastlane Target1, und wenn es fertig ist, läuft die 2 und so weiter ... aber besser testen Sie dies.

Ich hoffe, das wird dir helfen;).

Verwandte Themen