Ошибка SignTool при запуске сборки через Jenkins от имени другого пользователя - PullRequest
3 голосов
/ 26 января 2012

У меня есть MSBuild, который проходит через Jenkins с подписанным кодом в одном из компонентов.

Когда я запускаю сборку после запуска Jenkins от имени того же пользователя, с которого изначально был создан проект Visual Studio, он работает нормально. Однако когда я запускаю проект от имени того же пользователя с помощью запланированной задачи, запущенной другим локальным администратором, сборка завершается неудачно, даже если имя пользователя в списке процессов совпадает.

Так, например, скажем, что проект отлично работал как пользователь Admin, как в Visual Studio, так и при запуске MSBuild через экземпляр Jenkins на Tomcat, запущенный пользователем Admin.

Когда я переключаю пользователя на локального администратора John.admin и запускаю запланированное задание, которое запускает Tomcat от имени пользователя Admin, происходит сбой со следующей ошибкой SignTool:

VCBUILD: SignTool error : ISignedCode::Sign returned error: 0x80092006

В списке процессов Tomcat работает как пользователь Admin, так же, как если бы Admin запустил его с startup.bat (Tomcat является отдельной установкой).

Я пытался некоторое время, но не могу понять, почему сборка завершается неудачно при запуске через задачу. Кто-нибудь может увидеть проблему? Сборка Jenkins должна быть успешной после перезапуска и запуска компьютера через другого локального администратора.

РЕДАКТИРОВАТЬ: Я скопировал все сертификаты для пользователя Admin (с помощью оснастки), все переменные %PATH%, %CD%, %USERPROFILE% одинаковы, и задача запускается из той же папки. Единственное различие, которое я вижу, состоит в том, что идентификаторы сеанса пользователя отличаются. Я знаю это, потому что если я запускаю запланированное задание с John.admin, а затем регистрируюсь как Admin, java.exe не будет в списке процессов, пока я не нажму «показать процессы от всех пользователей», который затем покажет, что он запущен как пользователь Admin.

У меня почти нет идей, поэтому я могу попробовать что-нибудь.

1 Ответ

1 голос
/ 23 февраля 2012

Трудно сказать наверняка, но если я правильно понимаю вопрос, я бы посоветовал сосредоточить ваши усилия на любых переменных среды или другой пользовательской конфигурации, которая передается из родительского процесса (запланированной задачи), когда онпорождает дочерний процесс (Tomcat).Даже если Tomcat работает от имени администратора, возможно, что %USERNAME% передается ему как John.admin, или, возможно, %USERPROFILE% или даже %PATH% передается неправильно.

Другая возможность: дляв частности, запланированные задачи, в прошлом я был сожжен из-за того, что неправильно установил папку «start in», даже когда программу / сценарий можно найти.

Для устранения неполадок, возможно, напишите значения вашей средыпеременные, текущий каталог и другая соответствующая информация о конфигурации для файла журнала путем временного изменения startup.bat.

Я не очень знаком с SignTool, но это также может помочь - SignTool Error: ISignedCode:: Подписать возвращенную ошибку: 0x80092006 - ответы обсуждают, где хранится закрытый ключ по сравнению с поиском.

...