Недавно я имел удовольствие настроить новую среду сборки на работе, чтобы заменить нашу настройку TFS Team Build и ее неполноту информации о сборке. В ходе этого процесса я обнаружил множество вещей, которые не так интересны для разработчиков, которые есть в нашей крупной корпоративной ИТ-инфраструктуре, чтобы держать массы в страхе — одна из них — прокси-сервер NTLM. И так началось стучать головой — надеюсь, я смогу спасти вам клетки мозга и вовремя доставить вас домой.
Сегодня мы рассмотрим две вещи;
- Как TeamCity работает на Windows , чтобы увидеть внешний мир через прокси — сервер NTLM.
- Запуск MSyGit в Windows для просмотра внешнего мира через NTLM-прокси.
Моя ситуация может отличаться от вашей, но она сводится к следующему: мой сервер сборки находится за прокси-сервером, прошедшим проверку подлинности NTLM. Прокси не является анонимным. Короче говоря, для доступа к Интернету необходимы имя пользователя и пароль домена или токен NTLM.
Поэтому мне нужно, чтобы TeamCity и Git использовали мой прокси-сервер.
Конфигурация TeamCity
Хотя вы можете подумать, что TeamCity будет относительно легко просто «указать на ваш прокси-сервер» на симпатичной странице в разделе «Администрирование» или аналогичной, но вы будете жить в стране сказок.
Посмотрите, как я делал все выше и ниже, казалось, что почти нет рабочей документации, показывающей, как заставить это работать — вы могли бы подумать, что Jetbrains прикрыли вас своей удивительной вики- слиянием . Вы бы ошиблись, хотя.
После долгих попыток я понял, что TeamCity работает на Java, а точнее на веб-сервере Tomcat. Java позволяет передавать параметры конфигурации при запуске, а у Tomcat Catalina есть отличная панель конфигурации, в которую можно их ввести — если вы знаете только, где искать. Из этого окна вы можете ввести параметры конфигурации Java .
То, что мы ищем, это:
-Dproxyset=true -Dhttp.proxyHost=myproxyserver.mydomain.com -Dhttp.proxyPort=8080 -Dhttp.nonProxyHosts="mydomain.com" -Dhttps.proxyHost=myproxyserver.mydomain.com -Dhttps.proxyPort=8080 -Dhttps.nonProxyHosts="mydomain.com";
Волшебное заклинание, чтобы добраться до этой панели:
Откройте командную строку с повышенными правами.
Переместитесь в папку bin TeamCity (обычно C: \ TeamCity \ bin).
cd C:\TeamCity\bin\
Введите команду:
tomcat7w //ES//TeamCity
Это откроет это окно:
Перейти к вкладке J ava .
Введите параметры, указанные выше:
Нажмите Применить и перезапустите TeamCity (служба TeamCity).
Конфигурация Git
Следующей частью нашей проблемы было заставить Git общаться через прокси-сервер.
Git не поддерживал прокси-серверы NTLM до недавнего времени (версия 1.7.10 ), и с тех пор вы можете сказать git использовать прокси-сервер из командной строки следующим образом:
git config --global http.proxy=myproxyserver.mydomain.com:8080 git config --global https.proxy=myproxyserver.mydomain.com:8080
Это не похоже на работу для моей установки, хотя.
После большого количества исследований между моей командой и нашими ребятами из инфраструктуры выяснилось, что тип используемого NTLM-прокси просто не понравился Git.
Чтобы обойти это, мы установили следующий прокси-сервер « человек посередине» CNTLM .
CNTLM работает так: вы предоставляете ему некоторые учетные данные, указываете все, что вам нужно для доступа к Интернету, в качестве прокси-сервера, и он предлагает прокси-соединение без проверки подлинности, которое затем проходит аутентификацию и передает ваш прокси-сервер NTLM.
Для настройки CNTLM откройте файл : C: \ Program Files (x86 \ cntlm \ cntlm.ini
Username testuser Domain contorso Password password Proxy mycorporateproxy.mydomain.com:8080
Перезапустите службу, а затем укажите Git на вашем новом прокси-сервере CNTLM.
git config --global http.proxy=localhost:3128 git config --global https.proxy=myproxyserver.mydomain.com:8080