SSL_ERROR_SYSCALL в конвейере Azure для доступа к нашему внутреннему серверу TFS 2018

#tfs #azure-pipelines

#tfs #azure-конвейеры

Вопрос:

С некоторых пор я пытаюсь настроить конвейер Azure для доступа к нашему внутреннему серверу TFS 2018.

Я создал служебное соединение «Other Git» с именем: TFS_PRJ, я использовал этот URL-адрес интрасети: https://tfs.mycie.com/DefaultCollection/myProject /. Для проверки подлинности я попробовал использовать учетные данные моей учетной записи домена Windows, а также токен PAT, созданный в TFS со всеми правами доступа.

Когда я создавал конвейер, я указал свой автономный агент, расположенный в той же интрасети, что и главная ветвь. Влияет ли эта ветвь на доступ к TFS? Я вижу в журналах: «Запуск: проверка TFS_PRJ @master на s». Я не вижу ветвей в TFS, должен ли я создать что-то в TFS, чтобы заставить это работать?

При запуске конвейера сначала у меня есть тайм-аут Запустить конвейер

Затем он запускается, и через 6-7 минут в журналах отображается эта ошибка: фатальная: невозможно получить доступ ‘https://tfs.myCie.com/DefaultCollection/myProject /’: OpenSSL SSL_connect: SSL_ERROR_SYSCALL при подключении к tfs.myCie.com:443

Я понял, что для доступа к этому серверу агент не должен использовать прокси, который в настоящее время используется в конвейерах, обращающихся к GitHub. Этот обход обычно выполняется с помощью файла proxy.pac, но я не вижу, как использовать этот файл в конфигурации агента. Чтобы включить обход прокси-сервера с файлами агента, файл .proxy содержит: http://abs-proxy.myCie.com:443 и файл .proxybypass содержит: myCie.com

Чтобы проверить, доступен ли сервер TFS, я вошел на сервер агента как учетная запись службы и в параметрах обозревателя IE добавил *.myCie.com на доверенные сайты, а затем я смог получить доступ https://tfs.mycie.com/DefaultCollection/myProject /. Я также могу пинговать tfs.mycie.com сервер

Итак, у меня есть несколько вопросов:

  • Что касается ветки, нормально ли использовать главную ветку, пока в TFS нет ветки, или для этого нужно что-то еще?
  • Когда я запускаю конвейер, он выдает тайм-аут, поскольку не может подключиться к TFS, но какую учетную запись и какой прокси-сервер он пытается использовать на данный момент? Тот, который определен в подключении к службе?
  • Что касается ошибки SSL_ERROR_SYSCALL, это неправильный синтаксис файла .proxybypass? «myCie.com «, ты видишь что-нибудь еще, что можно было бы сделать?
  • Могут ли быть какие-либо настройки или права доступа на сервере TFS, которые мне нужно иметь или установить?

Обновление 1:

Спасибо вам за это.
Я создал файл YAML в репозиториях Azure с таким содержимым:

 trigger:
- none

pool:
  name: 'myAgent'

steps:
- checkout: none

- task: CmdLine@2
  inputs:
    script: 'git clone -b master https://tfs.myCie.com/DefaultCollection/myProject'
  

Который вернул:

 Cloning into 'myProject'...
fatal: could not read Username for 'https://tfs.myCie.com': terminal prompts disabled
  

Вероятно, мне следует попробовать использовать PATToken в URL…

В агенте я добавил папку Git агента в путь и запустил:

git clone https://anything:PATTokenToMyLogin@tfs.myCie.com/defaultcollection/myProject

Который вернул:

 Cloning into 'myProject'...
fatal: Authentication failed for 'https://tfs.myCie.com/defaultcollection/myProject/'
  

Затем я попытался клонировать его из Team Explorer в VS2019.

Я нашел два списка проектов, tfs.myCie.com и «локальные репозитории Git», я не мог клонировать проекты из tfs.myCie.com поэтому я попытался клонировать в локальном Git, но это не сработало, да и не уверен, что это то, что нужно делать…

Я сделал этот снимок экрана, может быть, мой проект TFS не подходит для этого?

введите описание изображения здесь

Ответ №1:

  1. Если у вас нет другой ветки в TFS, обычно используется главная ветка, также мы можем указать имя ветки на вкладке «Получить источники», пожалуйста, проверьте рисунок ниже.

введите описание изображения здесь

  1. Вы можете проверить подключение к службе в настройках проекта -> Подключения к службе. Он обращается к репозиторию TFS через учетную запись службы, например, как показано ниже.

введите описание изображения здесь

  1. Согласно сообщению об ошибке OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to : , похоже, проблема в настройках вашей сети, возможно, прокси-сервер или брандмауэр блокируют доступ к удаленному репозиторию.

Вы должны проверить, находится ли ваш сервер TFS за брандмауэром или прокси-сервером. Если это так, пожалуйста, отключите его и повторите попытку. Пожалуйста, также попробуйте запустить команду clone на локальном компьютере напрямую, чтобы клонировать затронутый репозиторий, чтобы проверить, работает ли это. Если сервер находится за прокси-сервером, попробуйте установить git configs для прокси-сервера примерно так : git config --global http.proxy myproxy.com:8080

  1. Вам необходимо настроить разрешение учетной записи службы в системе управления версиями TFS.

Обновление1

Пожалуйста, проверьте пример, я отключаю этап проверки и добавляю cmd для клонирования репозитория TFS 2018, затем публикую его в Artifacts для проверки содержимого.

Примечание: репозиторий будет сохранен в папке с самостоятельным агентом, мы могли бы добавить task Power shell в конце и вызвать скрипт для удаления папки репозитория.

 trigger:
- none

pool:
  name: Default


steps:
- checkout: none

- task: CmdLine@2
  inputs:
    script: 'git clone -b {branch name} {TFS repo URL}'
  
- task: CopyFiles@2
  inputs:
    SourceFolder: '$(Agent.BuildDirectory)'
    Contents: '**'
    TargetFolder: '$(build.artifactstagingdirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
  

Результат:

введите описание изображения здесь

Обновление2

В основном это вызвано тем, что учетные данные были сохранены менеджером учетных данных. Вам следует удалить учетные данные, для https://tfs.myCie.com которых они были сохранены в диспетчере учетных данных.

вы можете открыть диспетчер учетных данных -> Учетные данные Windows -> в разделе Общие учетные данные -> удалить учетные данные, например git:https://tfs.myCie.com

Кроме того, удалите кэш Visual Studio.

введите описание изображения здесь

Примечание: вы также можете попытаться клонировать репозиторий на новой машине.

Комментарии:

1. Здравствуйте, судя по вашему снимку экрана в # 2, должен ли я видеть свое репозиторий TFS в репозиториях Git Azure? Я не имел в виду репозиторий Azure, исходный код находится на сервере TFS 2018 в нашей интрасети.

2. Мне нужно создать конвейер, который запускается, когда разработчики регистрируют код в TFS или запускают конвейер в Azure, подключаются к TFS, получают последнюю версию кода, а также создают и развертывают. На данный момент я могу создать подключение к службе, ввести URL-адрес TFS и токен PAT, созданный в TFS, но когда я запускаю конвейер, время ожидания истекает с ошибкой 504, как показано выше.

3. Я не вижу, что нужно устанавливать в настройках безопасности подключений к службам, ограничений на конвейеры нет, и они не используются совместно с другими проектами. Что касается пользовательских разрешений, я администратор. Администраторы конечной точки — это администратор, а учетная запись GitHub — пользователь.

4. Привет, мы не можем видеть репозиторий TFS в azure devops, я просто показываю вам учетную запись службы TFS. Не могли бы вы загрузить репозиторий TFS на компьютере с автономным агентом через git cmd? Если да, в качестве обходного пути мы можем отключить этап проверки, затем добавить task cmd и ввести git cmd, чтобы получить репозиторий TFS.

5. Привет @ClaudeVernier, я обновил ответ и добавил пример определения YAML, пожалуйста, проверьте его, а затем любезно поделитесь результатом здесь.