На нашем сервере сборки у нас есть работающий процесс, который, помимо прочего, необходим для запуска интеграционных тестов, чтобы получить доступ к базе данных.TFS Build vNext - процесс запуска после успешной сборки
Эта часть программного обеспечения может быть изменена в нашем репозитории, и поэтому я создал сборку CI, которая строит изменения. То, что я хотел бы сделать, это перезапустить процесс с новой скомпилированной версией при успешной сборке, но эта часть, похоже, не работает.
У меня нет проблем с запуском процесса и развертыванием результата в конкретном месте на сервере сборки, но, похоже, независимо от того, что я пытаюсь, процесс, который я запускаю, убивается, как только закончится работающая сборка.
Я попытался следующие:
с помощью PowerShell
Start-Process <path to file>
С CMD
с 'CMD' в качестве инструмента и следующие аргументы:
<path to file>
start <path to file>
/c start <path to file>
cmd <path to file>
cmd start <path to file>
cmd /c start <path to file>
Я также пробовал просто поставлять путь .exe в качестве имени инструмента, и никаких аргументов тоже не повезло.
Насколько хорошо это сработало?
Ну, для большинства из приведенных выше подходов, дополнительный шаг с командой PS Get-Process <exe name>*
У меня получилось, что процесс был запущен. Тот же шаг не дал никаких результатов после шага, который остановил процесс, поэтому можно было бы обновить новый обновленный. Поэтому я уверен, что это работает, vNext build просто убивает все это после завершения сборки.
Другие решения
У меня 2 решения осталось, что я могу думать о том, должен работать, но оба решения слишком сложны для моей симпатии, в том, что я представляю совсем сложность процесса сборки, которые затем может пойти не так, но здесь идет:
- Установите сервер сборки как действительную цель развертывания. Затем я предполагаю, что могу использовать шаг «PowerShell on Target Machines», даже если я нацелен на себя. Я бы предположил, что он будет действовать как отдельные процессы. Для этого требуется всевозможные конфигурации, чтобы добавить их на место, плюс написать удаленный сценарий PowerShell для этой задачи.
- Написание небольшого окна, которое можно вызвать с помощью, например, REST, который затем может запустить процесс, поэтому новая служба Windows станет личным. - это просто вводит новый слой, который также может потребоваться обновить. Тогда это может быть обновлено вручную вместо автоматического.
Опять же, я бы предпочел не использовать ни одно из двух решений, если лучше. :)
Имеет смысл да, но было бы также иметь смысл, чтобы иметь возможность обойти его. :) - У процесса есть значок уведомления с большим количеством возможностей отладки в контекстном меню, к которому нам также нужен доступ, поэтому его запуск в качестве сервиса - это не выход для этого конкретного сценария. :( –