Назад | Перейти на главную страницу

Как определить, почему служба Windows (агент сборки TeamCity) зависает при выполнении команды?

У меня проблема со службой Windows, в которой я просто не могу разобраться. Я пытаюсь выполнить HP WebInspect 9.0 из агента сборки TeamCity, который работает как служба Windows. Конечная цель - автоматизировать сканирование безопасности после публикации приложения в целевой среде.

У меня есть команда, которая прекрасно выполняется из командного окна, когда я удален на сервер:

"C:\Program Files\HP\HP WebInspect\wi.exe" -u http://mysite.com -r "Vulnerability (Classic)" -y Standard -f c:\Temp\Report.pdf -gp -v

Эта команда регулярно (каждые несколько минут) возвращает подробный вывод в терминал и, в конечном итоге, выводит отчет в формате PDF примерно через 13 минут (довольно стабильная продолжительность). Однако, как только я запускаю его из TeamCity, я вижу, что команда появляется в выводе сборки на сервере TeamCity, но после этого абсолютно ничего. Даже через 8 часов он просто зависает и я не знаю почему.

Дополнительная информация:

  1. Служба агента сборки TeamCity работает под моим именем, поэтому у нее должны быть те же права, что и при запуске ее вручную из командной строки.
  2. Если я изменяю один из параметров на недопустимый, WebInspect возвращает сообщение «недопустимый параметр», поэтому я знаю, что он определенно вызывается.
  3. Наблюдая за процессами в диспетчере задач, я вижу, что WI.exe запускается, когда я начинаю сборку, поэтому он определенно выполняется.
  4. Я ничего не получаю в журналах событий любого использования.
  5. Я не могу найти никаких журналов из WebInspect, созданных в результате использования командной строки (хотя есть журналы, доступные при сканировании, выполняемом в графическом интерфейсе).
  6. В переключателях командной строки WebInspect нет ничего другого, кроме настройки подробного вывода, которая могла бы предоставить дополнительную информацию.

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

В качестве первого шага я бы рекомендовал сохранить вашу длинную командную строку в пакетном файле (например, LaunchWI.cmd) и вызвать этот пакетный файл из агента сборки TeamCity.

Когда вы запускаете приложение из службы Windows, текущий рабочий каталог будет установлен на c: \ windows \ system32 - это потенциально может вызвать некоторые проблемы. Попробуйте добавить

C:

Компакт-диск "\ Program Files \ HP \ HP WebInspect"

в свой командный файл перед запуском webinspect.