Proxy

teamcity,在代理伺服器後面使用 bitbucket (git) 設置 vcs root

  • September 19, 2017

我在企業防火牆後面的 Windows Server 2012 機器上安裝了 TeamCity,該防火牆需要通過代理伺服器進行使用者身份驗證才能訪問 Internet。

我想將 TeamCity 連接到託管我們項目的 Bitbucket (git),以提取程式碼並在 corp 網路中建構和部署。

Git 通過 SourceTree(Git Windows 客戶端)和命令行執行良好。我已將代理設置添加到 .gitconfig 中,它可以通過代理通過 https 毫無問題地連接。

到現在為止還挺好。但是,當我嘗試讓 TeamCity 與 bitbucket 對話時,我收到一個錯誤:

連接失敗! 列出遠端參考失敗:java.netConnectException:連接被拒絕:連接 bitbucket.org

我查看了文件,如果您想通過代理進行連接,您需要將憑據傳遞給執行 TeamCity 的 JVM。當我在 Windows Server 2012 上並且 TeamCity 作為服務執行時,這應該是通過設置如下環境變數來實現的:

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

我創建了一個系統級 env 變數並重新啟動了伺服器,然後出現以下錯誤:

**https://bitbucket.org/teamname/example.git:**需要 407 代理身份驗證(Forefront TMG 需要授權才能完成請求。拒絕訪問 Web 代理過濾器。)

所以這給我留下了兩種可能性

  1. 防火牆正在阻止來自 Windows 服務的請求
  2. 使用者名和密碼未傳遞

TeamCity文件沒有提到 proxyUser 和 proxyPassword 參數,我在查看了可用的 JVM 代理參數後自己插入了它們。

我已經請我們的一位網路人員看一下防火牆(不是今天),但與此同時,如果有人有這方面的經驗並且知道我是否遺漏了什麼。任何幫助都感激不盡。

2016 年 2 月 16 日更新

在查看 JetBrains 支持網站時,我發現以下內容:

您好,我們不支持從命令行進行代理身份驗證。並且只設置參數是行不通的。

此外,上述選項僅適用於使用 TC 伺服器 JVM 執行的 java 程式碼。但是,我們經常使用本機客戶端來訪問 VCS:hg、perforce 和 TFS。Git 和 svn 使用 java 庫。

所以看起來環境變數的方法是死路一條,將不得不考慮使用 Git 客戶端進行連接。

因此,如何讓 TeamCity 在 NTLM 代理伺服器後面工作的答案就是作弊。

最後,我安裝了一個名為CNTLM Authentication Proxy的應用程序,它位於 TeamCity 和我的 NTLM 代理之間並處理所有請求。

當它工作時,我可以連接到 bitbucket 並觸發建構等等。但我應該提醒一句,在 Windows Server 2012 R2 上,它崩潰了很多。起初我們並沒有註意到太多,但是當我們向 TeamCity 添加應用程序時,我們每天都會發生多次崩潰,需要重新啟動 CNTLM 服務。

我現在有一個沒有身份驗證的新代理設置來解決這個問題。你的旅費可能會改變。

要將 TeamCity 連接到 CNTLM,您需要添加一個具有以下值的環境變數 TEAMCITY_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 服務和代理。

引用自:https://serverfault.com/questions/752412