Vous recevez cette invite car il n'y a pas de règle explicite relative à l'application. La stratégie de pare-feu par défaut autorise les connexions sortantes ne correspondant à aucune règle. Cela concerne donc généralement l’application qui accepte les connexions entrantes, qui sont bloquées par défaut et qui nécessitent donc l’existence d’une règle de pare-feu spécifique avant de les autoriser à travers le pare-feu.
Le pare-feu Windows considère vos versions comme des programmes distincts car il s'agit d'exécutables différents avec des chemins d'accès différents.
Il existe un certain nombre de moyens possibles pour résoudre ce problème:
Demandez à chaque construction de définir une règle
Vous pouvez créer une règle de pare-feu, soit dans le code de l'application, soit au cours d'une étape de post-génération exécutée par votre outil de CI.
Si vous ne souhaitez pas ajouter de code spécifique à votre exécutable (ou processus de configuration) pour configurer une règle, vous pouvez faire en sorte que votre outil de configuration exécute un script PowerShell similaire à celui présenté ci-dessous.
Ce script supprime toutes les règles de pare-feu de génération de test existantes et ajoute une règle autorisant les connexions entrantes pour la génération actuelle:
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
Pour utiliser le script fourni, vous devez:
- Avez-vous installé PowerShell v4.0 sur le serveur CI? Cela devrait être le cas pour Windows 8x ou Server 2012
- Enregistrez le script dans un répertoire sur lequel votre outil de CI dispose des droits de lecture et d'exécution dans un fichier avec une
.ps1
extension.
- Exécuter le script en tant qu'administrateur - cela est nécessaire car la modification des règles de pare-feu est une opération privilégiée
- Demandez à votre outil de configuration d’exécuter le script à l’aide d’une commande similaire à:
powershell.exe -ExecutionPolicy Bypass Add-BuildFirewallRule.ps1
-BuildPath %FULL_BUILD_PATH
Vous devez remplacer %FULL_BUILD_PATH%
dans la commande ci-dessus le chemin complet de l’exécutable construit - votre outil de configuration doit pouvoir le faire assez facilement.
Débloquer le port cible
Vous pouvez avoir le pare-feu Windows autoriser tout le trafic (ou tout le trafic d'un certain protocole) sur des ports spécifiques. Cela permettrait à vos versions (et à toute autre application utilisant ce port) de communiquer. Vous pourrez peut-être spécifier que la communication doit être limitée à la machine locale à l'aide de l'interface utilisateur du Pare-feu Windows avec sécurité avancée pour créer la règle, mais je l'éviterais quand même.