So deklarieren Sie eine globale Variable in Jenkins und verwenden sie in einer MSBuild-Task in jedem einzelnen Projekt

7

Ich konvertiere unsere CI-Plattform von CruiseControl zu Jenkins und kann scheinbar nichts herausfinden, was relativ einfach zu sein scheint (Disclaimer - ich bin kein CI oder baue Automatisierungsexperte, aber das wurde weggeworfen in meinen Schoß und ich finde es interessant)

In CruiseControl kann ich Variablen wie folgt deklarieren:

%Vor%

Verwenden Sie sie dann als Teil einer MSBuild-Aufgabe

%Vor%

Wenn sich die Stamm- oder IIS-Verzeichnisse ändern, können sie problemlos auf alle Projekte gleichzeitig angewendet werden. Wir haben ~ 60 Projekte eingerichtet, so dass dieses Projekt nach Projekt sehr zeitaufwendig wäre. Wenn Sie dies zu Jenkins migrieren, sehen die MSBuild-Befehlszeilenargumente nun so aus (Teilstichprobe, enthält aber auch, was relevant ist):

%Vor%

Das IIS-Verzeichnis ist fest codiert. Ich brauche das, um etwas mehr so ​​zu sein:

%Vor%

Gibt es eine Möglichkeit, das zu tun? Ich habe das Konfigurations-Slicing-Plugin ausprobiert, was zwar nützlich ist, aber nicht zu dem passt, was ich sehe

    
TechDawg270 29.05.2015, 19:17
quelle

2 Antworten

7

Für globale Variablen benötigen Sie das EnvInject-Plug-in . Damit können Sie (unter anderem) Variablen auf globaler (Knoten-) Ebene, auf Job-Ebene oder als Schritt einrichten. Sie können Variablen direkt oder aus einer Eigenschaftendatei oder aus Skripten setzen.

Einmal festgelegt, sind die Variablen als Umgebungsvariablen für den Rest von Jenkins und seine Schritte (innerhalb des Gültigkeitsbereichs) verfügbar.

Beim Übergeben von Argumenten an MSBuild gibt es beim Konfigurieren eines MSBuild-Schritts eine Option zum Übergeben von "Befehlszeilenargumenten" im Format /p:Param=Value.

Der "Wert" könnte eine Umgebungsvariable sein. In einer Windows-Umgebung würden Sie als% myvar%

darauf verweisen

Wenn Sie also ein globales GLOBAL_IIS_DIR=C:\path\to\IIS mit EnvInject konfigurieren, können Sie es in der Befehlszeile mit /p:IIS_DIR=%GLOBAL_IIS_DIR%

referenzieren     
Slav 29.05.2015, 20:18
quelle
19

Sie können dies mit der eingebauten Jenkins-Funktionalität tun:

Dann müssen Sie Ihre Variable erweitern. Dies hängt davon ab, wo Sie es verwenden würden.

Zum Beispiel: %MSBuild% und %IIS_DIR% für den Build-Schritt "Windows-Batch-Befehl ausführen". Andere Build-Schritte (und Plugins) können es anders verwenden.

    
Vitalii Elenhaupt 30.05.2015 19:50
quelle