Sie erhalten diese Aufforderung, weil es keine explizite Regel für die Anwendung gibt. Die Standard-Firewall-Richtlinie lässt zu, dass ausgehende Verbindungen mit keiner Regel übereinstimmen. Dies bezieht sich in der Regel darauf, dass die Anwendung eingehende Verbindungen akzeptiert, die standardmäßig blockiert sind. Daher muss eine bestimmte Firewall-Regel vorhanden sein, bevor sie die Firewall passieren darf.
Die Windows-Firewall betrachtet Ihre Builds als separate Programme, da sie unterschiedliche ausführbare Dateien mit unterschiedlichen Pfaden sind.
Es gibt verschiedene Möglichkeiten, dieses Problem anzugehen:
Lassen Sie jedes Build eine Regel festlegen
Sie können eine Firewall-Regel erstellen, entweder als Teil des Anwendungscodes oder als Post-Build-Schritt, der von Ihrem CI-Tool ausgeführt wird.
Wenn Sie Ihrer ausführbaren Datei (oder dem Einrichtungsprozess) keinen spezifischen Code hinzufügen möchten, um eine Regel festzulegen, können Sie mit Ihrem CI-Tool ein PowerShell-Skript ausführen, das dem unten stehenden ähnlich ist
Dieses Skript entfernt alle vorhandenen Firewall-Regeln für den Testaufbau und fügt eine Regel hinzu, die eingehende Verbindungen für den aktuellen Build zulässt:
Param ( [Parameter(Mandatory=$true)] [string] $BuildPath ) function Add-TestBuildFirewallRule { Param ( [Parameter(Mandatory=$true)] [string] $BuildPath ) $existingRule = Get-NetFirewallRule -Name YourApp-LatestTestBuild -ErrorAction SilentlyContinue if($existingRule -ne $null) { Remove-NetFirewallRule -Name YourApp-LatestTestBuild } New-NetFirewallRule -Name "YourApp-TestBuild" -DisplayName "Latest Test Build" -Description "Allow the latest test build to accept incomming connections" -Enabled True -Direction Inbound -Program $BuildPath } Add-TestBuildFirewallRule -BuildPath $BuildPath
Um das mitgelieferte Skript verwenden zu können, müssen Sie Folgendes tun:
- Lassen Sie PowerShell v4.0 auf dem CI-Server installieren. Dies sollte für Windows 8x oder Server 2012 der Fall sein
- Speichern Sie das Skript in einem Verzeichnis, für das Ihr CI-Tool Lese- und Ausführungsrechte besitzt, in einer Datei mit der
.ps1
Erweiterung - Führen Sie das Skript als Administrator aus. Dies ist erforderlich, da das Ändern von Firewall-Regeln eine privilegierte Operation ist
- Lassen Sie Ihr CI-Tool das Skript mit einem Befehl ausführen, der dem folgenden ähnelt:
powershell.exe -ExecutionPolicy Bypass Add-BuildFirewallRule.ps1 -BuildPath %FULL_BUILD_PATH
Sie müssen%FULL_BUILD_PATH%
im obigen Befehl den vollständigen Pfad zur erstellten ausführbaren Datei ersetzen - Ihr CI-Tool sollte dies relativ leicht tun können.
Entsperren Sie den Zielport
Sie können festlegen, dass die Windows-Firewall den gesamten Datenverkehr (oder den gesamten Datenverkehr eines bestimmten Protokolls) für bestimmte Ports zulässt. Dadurch können Ihre Builds (und jede andere Anwendung, die diesen Port verwendet) miteinander kommunizieren. Sie können möglicherweise festlegen, dass die Kommunikation auf den lokalen Computer beschränkt werden soll. Verwenden Sie dazu die Windows-Firewall mit erweiterter Sicherheitsoberfläche, um die Regel zu erstellen. Ich würde dies jedoch nach Möglichkeit vermeiden.