Ich habe zwei Jenkins Jobs, die unsere Funktionstests ausführen. Ein Job ist für jedes Mal, wenn etwas zur Code-Überprüfung eingereicht wird und der andere Job immer dann ausgeführt wird, wenn etwas zur Beherrschung gedrückt wird.Können Sie Umgebungsvariablen an xcodebuild übergeben?
Da es sich um Funktionstests handelt, testen sie ganze Abläufe der Anwendung, die letztendlich den Benutzerstatus ändern. Das Problem, das wir haben, ist, dass jeder Job das gleiche Konto verwendet. Wenn also zwei Jenkins-Jobs parallel ausgeführt werden, ändern sie dasselbe Konto, wodurch sie in einen unerwarteten Zustand versetzt werden und den Test nicht bestehen.
Mein Plan war, JENKINS 'BUILD_NUMBER-Umgebungsvariable zu verwenden, und indem ich ein bisschen Artmimetic dazu verwendete, konnte ich eine garantierte eindeutige Nummer für den Job haben. Diese eindeutige Nummer könnte dann in xcodebuild als Umgebungsvariable übergeben werden, und die Tests könnten diese Nummer verwenden, um sicherzustellen, dass jeder Jenkins an einem eindeutigen Account arbeitet.
Das Problem ist, dass ich keine Möglichkeit finden kann, Umgebungsvariablen an xcodebuild zu übergeben. Ich weiß, dass es möglich ist, benutzerdefinierte Build-Einstellungen über xcodebuild (oder xcargs, wenn Sie Fastlane verwenden) zu übergeben, aber diese Werte scheinen nicht als Umgebungsvariablen zugänglich zu sein. Sie sind für den Präprozessor zugänglich und Sie können damit den Wert in Ihre Info.plist exportieren und von dort lesen. Aber dann hast du diese Werte in deine Binärdatei übertragen und sie kann nicht geändert werden, es sei denn, du hast sie neu erstellt, was nicht ideal ist. Auch zu diesem Zeitpunkt könnte ich Jenkins einfach in eine Datei auf der Festplatte schreiben lassen und die Tests daraus lesen lassen. Es ist im Wesentlichen die gleiche Funktionalität und erspart mir, Build-Einstellungen übergeben zu müssen.
Wir verwenden etwas Ähnliches in unserem Fastfile 'Fitness-Studio ( Schema: Optionen [: Schema], Konfiguration: Optionen [: config], use_legacy_build_api: Optionen [: ad_hoc], sauber: true, xcargs: " '$ {} inherited GIT_BRANCH = # {Zweig}' GCC_PREPROCESSOR_DEFINITIONS =" ) ' Soweit mit' NSProcessInfo' zugegriffen Laufzeitvariablen ich war dort hätte schwören können, Ein Weg, aber ich kann es nicht finden – tapi
Dies ist der Mechanismus, auf den ich Bezug nahm. "Die einzige Fähigkeit, die ich gefunden habe, besteht darin, eine benutzerdefinierte Build-Einstellung zu übergeben, die Sie dann an die Info.plist ausgeben und die Informationen von dort abrufen können". Ich habe den xcargs-Parameter auch in unserer Fastfile verwendet, aber ich konnte sowieso nicht finden, dass das, was ich an xcargs weitergegeben habe, eine Umgebungsvariable war, nicht etwas, auf das nur der Präprozessor Makro zugreifen konnte. –