Как настроить TFS 2018 для извлечения источника из Git через SSH? - PullRequest
0 голосов
/ 19 декабря 2018

Я настраиваю сервер непрерывного развертывания, используя TFS 2018 на месте.Исходный код проекта размещен на другом сервере Git, доступном по SSH или HTTPS.Я собираюсь использовать TFS только для автоматизации новых сборок / развертываний с использованием опроса Git TFS.

У меня есть два агента, один в Windows и один в Linux.Агент Linux работает как контейнер Docker.Я использую агент Windows для создания кода ASP.NET, и он отлично работает с использованием аутентификации HTTPS.Сейчас я пытаюсь настроить сборку для агента Linux, который получает код JavaScript и собирает его.Проблема заключается в том, что агент Linux не может получить код.

  • При попытке использовать HTTPS с использованием точно таких же учетных данных, с которыми работает агент Windows, я получаю «ошибка аутентификации»:

    2018-12-19T15:43:57.0878068Z ##[command]git fetch --tags --prune --progress --no-recurse-submodules origin
    2018-12-19T15:43:57.0883732Z fatal: Authentication failed for 'https://***:***@<redacted>/'
    2018-12-19T15:43:57.0936665Z ##[warning]Git fetch failed with exit code 128, back off 2.956 seconds before retry.
    
  • Я решил попробовать использовать SSH для получения источников.Я сгенерировал пару закрытых / открытых ключей SSH и добавил открытый ключ в свою учетную запись на удаленном сервере Git.Однако я не могу настроить задачу TFS Git «Получить источники» для использования SSH с использованием аутентификации по секретному ключу.Для этого в конфигурации службы Git нет опции, только для предоставления пары пользователь / пароль.Попытка просто вставить закрытый ключ в поле пароля дает следующее:

    2018-12-19T15:49:46.2303693Z ##[command]git remote set-url origin ssh://emptyusername:***@<redacted>
    2018-12-19T15:49:46.2312696Z ##[command]git remote set-url --push origin ssh://emptyusername:***@<redacted>
    2018-12-19T15:49:46.2315992Z ##[command]git fetch --tags --prune --progress --no-recurse-submodules origin
    2018-12-19T15:49:46.2318791Z ssh: Could not resolve hostname emptyusername:-----begin rsa private key----- miieowibaakcaqeav7dgukagzcpr: Name or service not known
    2018-12-19T15:49:46.2319131Z fatal: Could not read from remote repository.
    
  • Создание службы SSH в диспетчере служб в TFS не работает, так как я считаю, что длязапуск удаленных команд через SSH, а не для получения исходного кода.(Служба, добавленная таким образом, вообще не отображается в конфигурации сборки, поэтому ее нельзя выбрать.)

  • Я нашел документацию, указывающую, что вы можете использовать PAT (персональный доступ).токен) в качестве имени пользователя для запроса HTTPS.Итак, я попробовал это сделать, но получил тот же результат, что и при попытке использовать мои действительные учетные данные:

    2018-12-19T15:57:45.3279943Z ##[command]git fetch --tags --prune --progress --no-recurse-submodules origin
    2018-12-19T15:57:45.3281813Z fatal: Authentication failed for 'https://voy2wog...@<redacted>'
    2018-12-19T15:57:45.3341431Z ##[warning]Git fetch failed with exit code 128, back off 4.71 seconds before retry.
    

Итак, подведем итог:

  • HTTPS-аутентификация на главном сервере Git от агента Windows работает нормально.
  • HTTPS-аутентификация на Git от агента Linux всегда кажется неудачной.
  • SSH-аутентификация на Git либо невозможна, либо нетОчевидно, как настроить в TFS.

Как я могу решить одну из этих двух проблем, чтобы настроить непрерывную сборку?

Мне нужно извлекать данные непосредственно из репозитория Git, чтобы я мог использовать функцию опроса для автоматического построения при каждом нажатии на заданные ветви.Другими словами, упаковка исходных текстов и подача их в TFS каким-либо иным способом нецелесообразна.

Сейчас я пытаюсь добавить необходимые инструменты в мой агент Windows, но в конечном итоге я хотел бы развернуть больше агентови агенты Linux предпочтительнее, особенно когда мы начинаем переходить на .NET Core и не должны зависеть от Windows для сборки.(Стоимость лицензирования Windows и все)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...