Innerhalb von Buildbot muss ich in der Lage sein, eine Umgebung zu "quellen", bevor ich einen Kompilierungsschritt mache.
Wenn ich die Anwendung über die Befehlszeile mit bash erstellen würde, müsste ich folgendes tun:
%Vor%In der Datei build master.cfg habe ich folgendes versucht:
%Vor%All dies scheitert, weil der Befehl nicht gefunden werden kann, was sinnvoll ist, da es sich um einen eingebauten Bash handelt.
Ich glaube auch nicht, dass dies der richtige Ansatz ist, da die Umgebung nicht unbedingt benutzt wird, wenn der nächste Schritt der Fabrik aufgerufen wird.
Nach einigen Experimenten habe ich einen Weg gefunden, dies zu erreichen. Sie müssen:
Hinweis: dass die Umgebung als Wörterbuch analysiert werden soll, das als env -Parameter
verwendet werden kann %Vor%Bei der Arbeit mit OpenEmbedded / Yocto haben wir das Problem ähnlich gelöst:
%Vor% Wenn Sie dann EnvStep
hinzufügen, wird der command
-Parameter auf foo
gesetzt. Dann können Sie foo
in der Umgebung ausführen, die mit environment-set-up-script
bezogen wurde. Mit anderen Worten, Sie würden den Schritt verwenden, indem Sie
und das Sourcing würde automatisch geschehen.
Wir haben auch eine Reihe anderer benutzerdefinierter Buildschritte, die die Herkunft des Build-Env benötigen. Daher lassen wir sie die Unterklasse EnvStep
statt ShellCommand
für die Umgebung, die automatisch behandelt werden soll.
Sie können den Parameter env
für den ShellCommand-Build-Schritt verwenden, um die Umgebung für Ihren Befehl einzurichten. ( Ссылка )
Sie können die Umgebung auch vor dem Start des Build-Slaves festlegen, wenn die Umgebung für alle Build-Befehle gleichermaßen gelten soll.
Grundsätzlich entweder:
Ein Beispiel für die Visual Studio-Entwicklung ist ebenfalls nützlich.
Bei Verwendung von Skripten für allgemeine Tools wird das richtige env für jede Maschine festgelegt, mehrere Versionen von VS können von denselben Buildern verwendet werden, und mehrere native und Cross-Architekturen werden unterstützt.
%Vor%Alternativ können Sie jeden Befehl starten, indem Sie versuchen, die Stapeldatei, & amp; und den Befehl zu zitieren.
Ich habe dieses Problem etwas anders gelöst. Ich installiere eine Batch-Datei auf dem Windows-Worker, die nach dem Start die Umgebungseinstellung-Batch-Datei aufruft und dann den beabsichtigten Befehl ausführt. Dies wird natürlich durch die Tatsache erschwert, dass Batch-Dateien bei der Weiterleitung von Argumenten schrecklich sind, und durch die Tatsache, dass VsDevCmd.bat von Visual Studio 2017 Ihr cwd überlagert. Wenn Sie jedoch die folgende Datei auf dem Worker installieren, können Sie mit VS2017 erstellen:
%Vor%Sobald dies erledigt ist, können Sie in Ihrer Bulidbot-Master-Logik eine Funktion erstellen, die diese Batch-Datei anfügt:
%Vor%Damit können Sie Befehle ausführen, in denen Sie msbuild.exe aufrufen, das in seinen Argumenten Gleichheitszeichen erwartet. Gib sie einfach als doppelte Unterstriche an:
%Vor%Tags und Links buildbot