teamcity,使用代理服务器后面的bitbucket(git)设置vcs root

我已经在企业防火墙后面的Windows Server 2012框中安装了TeamCity,该防火墙需要通过代理服务器进行用户身份validation才能访问Internet。

我想将TeamCity连接到托pipe我们项目的Bitbucket(git),以便下拉代码并在公司networking中构build和部署。

通过SourceTree(Git Windows客户端)通过自己的Git并通过命令行工作正常。 我已经将代理设置添加到.gitconfig,它可以通过代理通过https进行连接而不会发生问题。

到现在为止还挺好。 但是当我尝试让TeamCity与bitbucket对话时,我得到一个错误:

连接失败! 列表远程引用失败:java.netConnectException:连接被拒绝:连接bitbucket.org

我查看了文档,看起来如果你想通过代理连接,你需要把凭据传递给运行TeamCity的JVM。 正如我在Windows Server 2012和TeamCity作为服务运行,这应该是通过像这样设置一个环境variables:

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 

我创build了一个系统级别的envvariables,并重新启动服务器,然后给我以下错误:

https://bitbucket.org/teamname/example.git:407需要代理身份validation(Forefront TMG需要授权才能完成请求,拒绝访问Web代理筛选器。

所以这给了我两种可能性

  1. 防火墙阻止来自Windows服务的请求
  2. 用户名和密码没有被传递

TeamCity 文档没有提及proxyUser和proxyPassword参数,我在查看可用的JVM代理参数后自己插入它们。

我曾经问过我们的一个networking人员去看看防火墙(不是在今天),但同时如果任何人有这方面的经验,知道是否有什么我错过了。 任何帮助都感激不尽。

2016年2月16日更新

在查看JetBrains支持网站时,我发现以下内容:

嗨,我们不支持从命令行进行代理validation。 而通过只设置参数将无法正常工作。

此外,上述选项仅适用于使用TC服务器JVM执行的Java代码。 但是,我们经常使用本地客户端来访问VCS:hg,perforce和TFS。 Git和svn使用java库。

所以看来环境variables的做法是死路一条,必须看看使用Git客户端来进行连接。

所以如何让TeamCity在NTLM代理服务器后面工作的答案是欺骗。

最后,我安装了名为CNTLM Authentication Proxy的应用程序,它位于TeamCity和我的NTLM代理之间,处理所有的请求。

当它工作,这是很好的,我可以连接到bitbucket和构build触发等,但我应该加一句警告,在Windows Server 2012 R2,它崩溃了很多。 一开始我们并没有注意到,但是由于我们已经向TeamCity添加了应用程序,所以我们每天都有多次崩溃,需要重新启动CNTLM服务。

我现在已经有一个新的代理设置没有身份validation来解决这个问题。 你的旅费可能会改变。

要将TeamCity连接到CNTLM,您需要添加envvariablesTEAMCITY_SERVER_OPTS,并使用以下值

 -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" 

端口3128是CNTLM安装后正在监听的端口。 当您更改/添加此项时,您需要重新启动TeamCity服务和代理。