Atlassian Bamboo PowerShell Pester Integration

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.

Bamboo PowerShell Pester Integration - Variables

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.

Bamboo PowerShell Pester Integration - Stages und Jobs

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.

Bamboo PowerShell Pester Integration - Source Code Checkout

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
Bamboo PowerShell Pester Integration - PowerShell Task

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!"
}
Bamboo PowerShell Pester Integration - Pester PowerShell Task

NUnit Parser Konfiguration

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

Bamboo PowerShell Pester Integration - NUnit Parser

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.

Bamboo PowerShell Pester Integration - Job Resultate

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

Bamboo PowerShell Pester Integration - Job Error

Leave a Reply