Wie können Sie eine Umgebung innerhalb eines Buildbot-Schritts "erschließen"?

8

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.

    
Simon Black 17.07.2013, 09:58
quelle

6 Antworten

4

Nach einigen Experimenten habe ich einen Weg gefunden, dies zu erreichen. Sie müssen:

  • Führen Sie eine Bash-Subshell aus, die die Umgebung festlegt, die für diese Shell verwendet werden soll, d. h. call bash mit der Umgebungsvariablen BASH_ENV auf die Datei, die in die Umgebung eingefügt werden soll.
  • Führen Sie den Befehl env in bash aus, um die Umgebung zu erfassen
  • parsen das Ergebnis des Befehls env in eine Eigenschaft (mit einem SetProperty Schritt)
  • Verwenden Sie die Eigenschaft in weiteren Schritten als env -Parameter

Hinweis: dass die Umgebung als Wörterbuch analysiert werden soll, das als env -Parameter

verwendet werden kann %Vor%     
Simon Black 18.07.2013, 10:36
quelle
7

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

aufrufen %Vor%

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.

    
imolit 30.08.2013 15:38
quelle
3

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:

  1. Erarbeiten Sie die erforderlichen Umgebungsvariablen und übergeben Sie sie in env.
  2. Liefern Sie die Konfiguration, bevor Sie den Build-Slave starten.
  3. Umschließen Sie den Befehl source und Ihre Build-Befehle sind ein Shell-Skript und werden als einzelner Build-Schritt ausgeführt.
Douglas Leeder 17.07.2013 10:13
quelle
1

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.

    
rickfoosusa 14.05.2014 22:20
quelle
0
%Vor%     
Erhard 14.06.2017 16:23
quelle
0

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%     
Michael Labbé 22.12.2017 02:39
quelle

Tags und Links