Você está recebendo este prompt porque não há uma regra explícita relacionada ao aplicativo. A política de firewall padrão permite conexões de saída que não correspondem a nenhuma regra, o que na maioria das vezes se relaciona ao aplicativo que aceita conexões de entrada, que são bloqueadas por padrão e exigem uma regra de firewall específica antes de serem permitidas pelo firewall. p>
O Firewall do Windows vê suas compilações como programas separados porque são executáveis diferentes com caminhos diferentes.
Existem várias maneiras possíveis de resolver esse problema:
Cada build deve definir uma regra
Você pode criar uma regra de firewall, como parte do código do aplicativo ou como uma etapa de pós-compilação executada pela sua ferramenta de IC.
Se você não quiser adicionar um código específico ao seu executável (ou processo de configuração) para configurar uma regra, você pode fazer com que sua ferramenta de CI execute um script do PowerShell semelhante ao abaixo
Este script remove as regras de firewall de compilação de teste existentes e adiciona uma regra que permite conexões de entrada para a compilação atual:
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
Para usar o script fornecido, você precisa:
- Tenha o PowerShell v4.0 instalado no servidor do CI. Este deve ser o caso do Windows 8x ou Server 2012
- Salve o script em um diretório que sua ferramenta de CI tenha como leitura & Executar direitos em um arquivo com extensão
.ps1
- Execute o script como administrador - isso é necessário porque a alteração das regras de firewall é uma operação privilegiada
- Peça à sua ferramenta de CI para executar o script usando um comando semelhante a:
powershell.exe -ExecutionPolicy Bypass Add-BuildFirewallRule.ps1 -BuildPath %FULL_BUILD_PATH
Você precisa substituir%FULL_BUILD_PATH%
no comando acima pelo caminho completo para o executável construído - sua ferramenta de CI deve ser capaz de fazer isso com bastante facilidade.
Desbloquear a porta de destino
Você pode ter o firewall do Windows permitindo todo o tráfego (ou todo o tráfego de um determinado protocolo) em portas específicas. Isso permitiria que suas compilações (e qualquer outro aplicativo usando essa porta) se comuniquem. Você pode ser capaz de especificar que a comunicação deve ser limitada à máquina local usando a interface de usuário do Firewall do Windows com Segurança Avançada para criar a regra, mas ainda assim evitaria isso, se possível.