teamcity, configure a raiz vcs usando bitbucket (git) atrás do servidor proxy

2

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

  1. O firewall está bloqueando a solicitação porque está vindo de um serviço do Windows
  2. 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.

    
por Mike 28.01.2016 / 15:12

1 resposta

0

Assim, a resposta a como usar o TeamCity trabalhando atrás de um servidor proxy NTLM é enganar.

No final, instalei um aplicativo chamado CNTLM Authentication Proxy , que fica entre o TeamCity e meu proxy NTLM e lida com todas as solicitações.

Quando funciona, é ótimo eu posso me conectar ao bitbucket e as construções são acionadas etc. Mas devo adicionar uma palavra de cautela, no Windows Server 2012 R2, ele trava muito. Nós não notamos muito a princípio, mas à medida que adicionamos aplicativos ao TeamCity, tivemos várias falhas por dia que exigem que o serviço CNTLM seja reiniciado.

Agora eu tenho uma nova configuração de proxy sem autenticação para corrigir o problema. Sua milhagem pode variar.

Para conectar o TeamCity ao CNTLM, você precisa adicionar uma variável env TEAMCITY_SERVER_OPTS com o seguinte valor

-Dproxyset=true -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128 -Dhttp.nonProxyHosts="localhost|127.0.0.1" -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 -Dhttps.nonProxyHosts="localhost|127.0.0.1"

com a porta 3128 sendo o que o CNTLM está escutando uma vez instalado. Você precisará reiniciar o Serviço e o Agente do TeamCity quando tiver alterado / adicionado isso.

    
por 09.09.2016 / 12:32