Краткая версия: две сборки, A и B, для одной и той же фиксации, обе выполняются на нашем сервере сборки с помощью службы агента VSTS
Сборка A:
- Агент работает какСетевая служба
- Сохраняет файл .coverage размером 267 КБ, показывая ненулевое% покрытия кода
- Работает успешно, без ошибок, те же журналы испытаний, что и сборка B
Сборка B:
- Агент, работающий как локальная система
- Сохраняет файл .coverage размером 1 КБ, показывая 0% покрытия кода
- Работает успешно, без ошибок (за исключениемсбой шлюза качества из-за покрытия кода 0%, но это преднамеренно), те же журналы испытаний, что и для сборки A
Дополнительная информация:
Служба агента VSTS обычно запускалась на нашем сервере сборки как "Сетевой сервис », и все было хорошо.Пока нам не пришлось изменить службу агента, чтобы она работала как «Локальная система», чтобы она могла обращаться к сертификату в хранилище «LocalMachine» , которое нам нужно для аутентификации службы Azure AD .После этого он по-прежнему утверждал, что все делает успешно, за исключением того, что файл покрытия кода является крошечным и требует 0% покрытия кода, что странно, поскольку модульные тесты, безусловно, выполняются.Журналы из двух тестовых заданий абсолютно идентичны (за исключением таких вещей, как временные метки и номера сборки), там нет никаких полезных предупреждений или ошибок.
Я уверен, что, вероятно, не идеально запускать агент как локальныйСистема, но эта учетная запись имеет больше разрешений, чем сетевая служба, поэтому я не знаю, как это может быть проблема с разрешениями.Возможно, я только что допустил ошибку при настройке чего-либо, но, похоже, единственный выход из этого - либо
- дать сетевым службам дополнительные разрешения (плохо)
- регенерация/ переместить сертификат участника службы Azure AD в хранилище сертификатов «Текущий пользователь» для сетевой службы (чувствует себя плохо, но я не уверен, почему)
- создайте новую учетную запись службы и смиритесь с проблемой разрешений навсегда (тьфу)
Можем ли мы как-то диагностировать, что именно происходит с этим тестовым заданием, не прибегая к procmon?Или есть лучший способ управлять этим материалом?