In Azure Pipelines sind Variablen eine recht statische Angelegenheit. Für jede Pipeline können Variablen mit Werten vordefiniert werden. Das Problem ist nur, dass auf diese Variablen nur Lesend zugegriffen werden kann.
Variablen können in Skripten zu Laufzeit erzeugt und innerhalb des gleichen Tasks in anderen Skripten verwendet werden.
Folgendes Beispiel:
In den Solutions wird die Versionsnummer einer Applikation über einen Ordner kenntlich gemacht. In diesem Ordner liegen weitere versionsbezogene Konfigurationsdateien.
Wie die Versionsnummer aus einer Ordnerauflistung gelesen werden kann, beschreibe ich im Beitrag Letzte Versionsnummer aus Ordnerstruktur auslesen.
In der Azure Pipeline werden zwei Powershell Skripte angelegt.
Im Powershell Skript SetVersionNumber wird die Versionsnummer in einer Output Varaible vVersionNumber gesetzt.
Wichtig ist einen Verweisnamen für Ausgabevariablen zu setzen, damit in den nächsten Skripten gezielt auf die richtige Variable zugegriffen werden kann.
Der Powershell Befehl ist:
$versionNumber = "1.0.0.0"
Write-Host "##vso[task.setvariable variable=vVersionNumber;isOutput=true;]${versionNumber}"
Write-Host "Set VersionNumber to $versionNumber"
Die Versionsnummer wird als Powershell Variable an die Set Variable Funktion übergeben. Beachte die geschweiften Klammern { }
Um die Ausgabevariable zu setzen, muss der Funktionsaufruf über den Powershell Befehl Write-Host an den Pipeline Agent übergeben werden. Der Pipeline Agent speichert die Ausgabevariable temporär für den gesamten Task.
Im Powershell Skript ReadVersionNumber wird auf die zuvor erzeugte Ausgabevariable zugegriffen.
Der Powershell Befehlt ist:
Write-Host "VersionNumber: $(SetVersionNumber.vVersionNumber)"
Die Ausgabevariable kann jetzt in anderen Skripten verwendet werden.
Wenn ich damit helfen konnte, lass einen Kommentar da.
Viele Grüße,
Olli