TeamCity meets HTTP-Proxy

Infrastructure

Wir als kleines Entwicklerteam, sind neben unserem Tagesgeschäft bestrebt die Infrastruktur unserer Anwendungsentwicklung zu verbessern.
Derzeit versuchen wir uns an Continuous Integration und wollen mittelfristig auch unser Deployment automatisieren.
Um diesem Ziel näher zu kommen setzen wir TeamCity ein (derzeit in der Version 7.1.5).

Unser Problem

In unserem Unternehmensnetzwerk werden Proxy-Server eingesetzt. Diese sind bei unserem Vorhaben hinderlich, sobald wir in einem Build mit TeamCity auf NuGet-Package-Restore zurückgreifen möchten.
Kurz: Die notwendigen Pakete und ihre Abhängigkeiten können nicht aus dem Internet geladen werden.

Unsere Lösung – Proxykonfiguration von TeamCity

Die Proxykonfiguration kann mit der Systemvariablen TEAMCITY_SERVER_OPTS vorgenommen werden:

TeamCity Server OPTS

In den Wert der Variablen können die http-,https-Proxy-Server, sowie die Adressen angegeben werden für die die Proxies umgangen werden sollen.

-Dhttp.proxyHost=<HTTP_PROXY>
-Dhttp.proxyPort=<HTTP_PROXY_PORT>
-Dhttps.proxyHost=<HTTPS_PROXY>
-Dhttps.proxyPort=<HTTPS_PROXY_PORT>
-Dhttp.nonProxyHosts="localhost|127.0.0.1|<OTHER>"
-Dhttps.nonProxyHosts="localhost|127.0.0.1|<OTHER>"

Die -Dhttp.nonProxyHosts sind nützlich, wenn durch TeamCity Git-Repositories aus dem lokalen Netz geladen werden sollen. In unserem Fall teilen sich die Git-Repositories und der TeamCity-Server auf der selben Serverumgebung.
Hinweis: Wenn ihr eine Version kleiner 7.1.5 verwendet, kann es dennoch zu Fehlern kommen, da das Git-Plugin von TeamCity frühre die -Dhttp.nonProxyHosts ignorierte. So kam es beim Abruf eines Repositories zu Verbindungs fehlern.
Hier findet ihr das aktualisierte Git-Plugin, dass -Dhttp.nonProxyHosts einbezieht:
http://youtrack.jetbrains.com/issueMobile/TW-23630

Nachdem alles eingestellt wurde, können NuGet-Pakete über das Internet geladen und in den Build integriert werden.

NuGet-Package-Restore serverseitig aktivieren

Damit das NuGet-Package-Restore auf unserem TeamCity-Server läuft, haben wir eine weitere Systemvariable deklariert, da TeamCity sonst einen Fehler ausgab, der darauf hinweist, dass NuGet-Package-Restore aktiviert werden soll.

enable nuget package restore

Fazit

Zwei Einstellungen sind nötig, damit TeamCity hinter Http-Proxy-Servern funktioniert. Da die Recherche etwas aufwendig war, denke  ich, dass dieser Artikel eine gute Zusammenfassung für alle liefert, die ein ähnliches Setup realisieren möchten.

Beste Grüße
Gregor

Gregor

Gregor Woiwode ist Angestellter der heco GmbH, wo er als Sofwareentwickler und Trainer tätig ist. Sein Fokus liegt in der Erstellung von Webportalen mit dem .NET- und Angular-Framework. Von 2007 bis 2010 studierte er Telekommunikationsinformatik an der Hochschule für Telekommunikation in Leipzig und schloss den Studiengang als Bachelor of Engineering ab. Derzeit studiert er im Studiengang Wirtschaftsinformatik um die Auszeichnung Master of Science zu erhalten.

What do you think? Please leave a Comment below!