Мы обновили наш сервер TFS 2013 до TFS 2015, и мы создаем новые агенты сборки.TFS Build агент выбрасывает «несанкционированное» исключение
До этого мы провели пробный прогон и получили все, что было достаточно хорошо, прежде чем мы сделали окончательное преобразование существующей базы данных TFS. Агент сборки работал отлично.
К нашему удивлению, наш агент по строительству более не сотрудничает после обновления. Создание тривиального определения сборки и присвоение ей очереди по умолчанию приводит к возникновению ошибки через 10-15 секунд.
Мы попытались повторно развернуть агента сборки, поиграть с разрешениями и пользователями, но безрезультатно.
Все мы получаем это в _diag \ журналы:
11:18:09.699993 JobManager.StartJob(job.JobId = a9702f31-2dff-4057-8253-a32ebc106f32)
11:18:09.699993 JobInfo.ctor
11:18:09.699993 JobInfo.ctor - leave
11:18:09.699993 JobManager.StartJob - calling JobWriter.StartJob
11:18:09.699993 JobWriter.StartJob - enter
11:18:09.699993 JobWriter.StartJob - (SKIPPING)first renew
11:18:09.715619 JobWriter.StartJob - start continual renewing
11:18:09.715619 AuthorizationType : OAuth
11:18:09.731245 ---------------------------------------------------------------------------
11:18:09.731245 Microsoft.VisualStudio.Services.WebApi.VssServiceResponseException: Unauthorized
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.HandleResponse(HttpResponseMessage response)
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__79.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__76`1.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.<GetConnectionDataAsync>d__6.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.VisualStudio.Services.Client.VssServerDataProvider.<ConnectAsync>d__39.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.Common.ConnectionHelper.GetConnection(Uri serverUri, VssCredentials credentials)
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.JobWriter.StartJob()
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.HandleResponse(HttpResponseMessage response)
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__79.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.VisualStudio.Services.WebApi.VssHttpClientBase.<SendAsync>d__76`1.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.VisualStudio.Services.Location.Client.LocationHttpClient.<GetConnectionDataAsync>d__6.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.VisualStudio.Services.Client.VssServerDataProvider.<ConnectAsync>d__39.MoveNext()
11:18:09.731245 --- End of stack trace from previous location where exception was thrown ---
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
11:18:09.731245 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.Common.ConnectionHelper.GetConnection(Uri serverUri, VssCredentials credentials)
11:18:09.731245 at Microsoft.TeamFoundation.DistributedTask.Agent.JobWriter.StartJob()
11:18:09.731245 ---------------------------------------------------------------------------
Запуск в интерактивном режиме или как служба не имеет никакого значения. Я зачислил пользователя службы агента сборки в качестве члена «Учетные записи службы пула агентов».
Я считаю, что это запрос обижая:
GET https://tfs:8443/tfs/DefaultCollection/_apis/connectionData?connectOptions=IncludeServices&lastChangeId=-1&lastChangeId64=-1 HTTP/1.1
User-Agent: VSServices/14.102.25423.0 (VsoAgent.exe) VsoAgent.exe/1.95.3
Accept-Language: en-US, nb-NO
X-TFS-FedAuthRedirect: Suppress
X-TFS-Session: 7a2e6368-a564-4231-bbd6-xxxxxxxxxx
X-VSS-Agent: VSS: b5d9c453-017f-407c-ac00-b479d0d0e8ed
Authorization: [huge bytesequence]
Host: tfs:8443
Accept-Encoding: gzip
Это вознаграждается 401. Мой собственный adminuser однако может загрузить этот URI просто отлично.
Мой собственный пользователь admin - тот, который я использовал при настройке агента. Я также попытался запустить vsoagent.exe в интерактивном режиме от этого пользователя ... Но не идти. Чтение между строками (и просмотр некоторых ролей) - это пользователь, который запрещает имя машины, на которой работает агент. Я предполагаю, что этот пользователь был создан вначале и является тем, который фактически используется. Как я могу получить эту ситуацию под контролем?
EDIT: Если я бегу vsoagent.exe интерактивно от пользователя, который не входит в список пула из «пул агентов учетных записей служб», то агент немедленно ошибется с Access denied. admrunem needs Listen permissions for pool Regular to perform the action. For more information, contact the Team Foundation Server administrator.
. Добавление admrunem в список вызывает меня немного дальше, а именно сообщение об ошибке, которое я пытаюсь диагностировать («несанкционированное» исключение). Примечание. На данный момент он использует авторизацию NTLM, а затем для фатального вызова, похоже, переключается на OAUTH.
Я не совсем понимаю, что вы подразумеваете под «пытаются изменить учетную запись домена».Вы имеете в виду запустить vsoagent как другого пользователя домена? vsoagent/login: пользователь, пароль? Если да, то я дважды пробовал каждый элемент в вашем списке. Любая идея, что делает JobWriter.StartJob()? Я попробовал рефлектор, но не мог понять, где он попадает в HandleResponse(), где он выдает исключение. «Несанкционированное» - довольно неопределенное сообщение об ошибке. Я предполагаю, что это происходит с сервера TFS. Есть ли журнал аудита, который может дать мне полезные подсказки? – 9Rune5
И только для того, чтобы быть понятным, с помощью «Учетных записей службы агента» вы имеете в виду коллекцию «Учетные записи сборки сборки проекта»? (эта группа не определена для моего проекта btw, а только для коллекции моего проекта) – 9Rune5
Да. Попробуйте использовать учетную запись в аккаунтах службы агента сборки и учетной записи службы пула агентов. –