Vor einiger Zeit habe ich eines meiner PowerShell Projekte auf einen neuen Atlassian Bitbucket Server mit einer Bamboo Verbindung zur Continuous Integration und Continuous Deployment migriert. Dabei habe ich versucht meine bestehenden Skripte zur Code Validierung durch eine Pester Integration in Bamboo weiter zu verwenden.
PowerShell Pester und Atlassian Bamboo arbeiten durch die beidseitige Unterstützung des NUnit XML Formats erstaunlich gut zusammen.
Mein Beispiel-Plan ist mit den Standard Einstellungen von Bamboo konfiguriert, plus einige zusätzliche Variablen. Die Variablen werden von detaillierteren Integrationstest verwendet, die ich aber in diesem Beitrag nicht behandle.

Stage Jobs
Ein Bamboo Plan hat neben den Basis-Konfigurationen eine oder mehrere Stages. Die Stages innerhalb des Plans können wiederum einen oder mehrere Jobs haben. Bamboo führt die Stages eines Plans parallel aus.

Die Jobs haben nun Tasks, die einer nach dem anderen ausgeführt werden. Ein Task ist der eigentliche Arbeitsauftrag innerhalb des Builds.
Source Code Checkout
Der Source Code Checkout ist ein Standard-Task. Dieser wird benötigt, damit der Agent die nötigen Files für die folgenden Tasks aus der entsprechenden Bitbucket Branch holen kann.

Import Module PowerShell Task
Dieser Task importiert das Pester PowerShell Modul in die PowerShell Session des Bamboo Agents. Dank PowerShell Auto-Load ist dies in den meisten Fällen zwar nicht zwingend notwendig, ist aber bei der Fehleranalyse eventuell hilfreich.
Import-Module Pester -force

Pester PowerShell Task
Dies ist der wichtigste Task der Bamboo PowerShell Pester Integration. Er startet den oder die Pester Tests und gibt die Ergebnisse im NUnitXml Format aus
$pester_xml = "./pester1_xml.xml"
$result = Invoke-Pester -Script ".\tests\Basic.test.ps1" -OutputFile $pester_xml -OutputFormat NUnitXml
if ($result.FailedCount -gt 0) {
Write-Error "$($result.FailedCount) tests did not pass!"
}

NUnit Parser Konfiguration
Im letzten Task werden nun die Pester Testergebnisse des vorherigen Tasks ausgewertet.

Job Resultate
Dank der guten Bamboo PowerShell Pester Integration mit Hilfe des NUnitXml Formats, werden die Testergebnisse sehr schön in der Weboberfläche dargestellt.

Sollte einer der Pester Tests einen Fehler haben, wird auch dieser sehr schön mit allen Details in der Bamboo Weboberfläche dargestellt.
