Instalei o TeamCity em uma caixa do Windows Server 2012 atrás de um firewall corporativo que exige autenticação do usuário por meio de um servidor proxy para acessar a Internet.
Eu quero conectar o TeamCity ao Bitbucket (git), que hospeda nossos projetos, para extrair o código e criar e implantar dentro da rede corporativa.
Git sozinho via SourceTree (cliente Git Windows) e através da linha de comando funciona bem. Eu adicionei a configuração de proxy ao .gitconfig e ele pode se conectar sem problemas através de https através do proxy.
Até aí tudo bem. Mas quando tento fazer com que o TeamCity fale com o bitbucket, recebo um erro:
Connection failed!
List remote refs failed: java.netConnectException:
Connection refused: connect bitbucket.org
Eu olhei nos documentos e parece que, se você quiser se conectar por meio de um proxy, precisará passar as credenciais para a JVM que está executando o TeamCity. Como estou no Windows Server 2012 e o TeamCity está sendo executado como um serviço, isso é supostamente obtido definindo uma variável de ambiente da seguinte forma:
TEAMCITY_SERVER_OPTS
-Dproxyset=true
-Dhttp.proxyHost=11.111.1.11
-Dhttp.proxyPort=8080
-Dhttp.proxyUser=username
-Dhttp.proxyPassword=password
-Dhttp.nonProxyHosts=localhost|127.0.0.1
-Dhttps.proxyHost=11.111.1.11
-Dhttps.proxyPort=8080
-Dhttps.proxyUser=username
-Dhttps.proxyPassword=password
-Dhttps.nonProxyHosts=localhost|127.0.0.1
Eu criei uma variável env de nível de sistema e reiniciei o servidor, o que me deu o seguinte erro:
https://bitbucket.org/teamname/example.git: 407 Proxy Authentication
Required ( Forefront TMG requires authorization to fulfil the request.
Access to the Web Proxy filter is denied. )
Então, isso me deixa com duas possibilidades
- O firewall está bloqueando a solicitação porque está vindo de um serviço do Windows
- O nome de usuário e a senha não estão sendo transmitidos
O docs do TeamCity não menciona o proxyUser e Argumentos de proxyPassword, eu os inseri depois de examinar os argumentos do proxy de JVM disponíveis.
Pedi a um de nossos colegas da rede para dar uma olhada no firewall (não hoje), mas se alguém tiver experiência disso e souber se há algo que eu tenha perdido. Qualquer ajuda será muito apreciada.
Atualização de 16 de fevereiro de 2016
Enquanto observava o site de suporte da JetBrains, encontrei o seguinte:
Hi, we don't support proxy authentication from command line. And by
setting only parameters it won't work.
Also, the options above applies to java code executed with TC server
JVM only. However, we often use native clients to access VCS: hg,
perforce and TFS. Git and svn use java libraries.
Portanto, parece que a abordagem de variável de ambiente é um beco sem saída, terá que olhar para usar o cliente Git para fazer a conexão.