#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:
- Если у вас нет другой ветки в TFS, обычно используется главная ветка, также мы можем указать имя ветки на вкладке «Получить источники», пожалуйста, проверьте рисунок ниже.
- Вы можете проверить подключение к службе в настройках проекта -> Подключения к службе. Он обращается к репозиторию TFS через учетную запись службы, например, как показано ниже.
- Согласно сообщению об ошибке
OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to :
, похоже, проблема в настройках вашей сети, возможно, прокси-сервер или брандмауэр блокируют доступ к удаленному репозиторию.
Вы должны проверить, находится ли ваш сервер TFS за брандмауэром или прокси-сервером. Если это так, пожалуйста, отключите его и повторите попытку. Пожалуйста, также попробуйте запустить команду clone на локальном компьютере напрямую, чтобы клонировать затронутый репозиторий, чтобы проверить, работает ли это. Если сервер находится за прокси-сервером, попробуйте установить git configs для прокси-сервера примерно так : git config --global http.proxy myproxy.com:8080
- Вам необходимо настроить разрешение учетной записи службы в системе управления версиями 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, пожалуйста, проверьте его, а затем любезно поделитесь результатом здесь.