Как выполнить пакетную команду Windows в Jenkins, которая не убита? - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь запустить два процесса из задания Jenkins с помощью пакетной команды Windows:

REM start Selenium drivers if needed
cd "%WORKSPACE%\Uca.SeleniumTests"
start "" powershell -ExecutionPolicy unrestricted -file ./startDrivers.ps1

startDrivers.ps1

$isGeckoDriverProcessOn = Get-Process geckodriver -ErrorAction SilentlyContinue
if(!$isGeckoDriverProcessOn){   
    Write-Host 'Starting geckodriver'   
    Start-Process -FilePath "geckodriver.exe"
} 

#$startChromeDriver = (Get-Item -Path ".\" -Verbose).FullName
$isChromeDriverProcessOn = Get-Process chromedriver -ErrorAction SilentlyContinue
if(!$isChromeDriverProcessOn){    
    Write-Host 'Starting chromedriver'
    Start-Process -FilePath "chromedriver.exe" 
}

Это прекрасно работает при запуске из командной строки, но процессы сразу же завершаются при запуске из Jenkins, несмотря на попытки запуска в другом сеансе (start).

Подчиненный Jenkins запускается из командной строки, и я вижу, что окна процесса отображаются в течение полсекунды. Мне кажется, что Дженкинс убивает сеансы командной строки и эти процессы вместе с ним.

Вопрос: Как выполнить пакетную команду Windows в Jenkins, которая не была убита?

1 Ответ

0 голосов
/ 07 января 2019

Я понял, что задаю неправильный вопрос, и правильный: как убедиться, что некоторые процессы, используемые Дженкинсом, являются долгоживущими?

Похоже, что Jenkins предназначен для скорейшей очистки всех запущенных процессов согласно этому вопросу и PrcessTreeKiller :

Чтобы надежно завершить процессы, порожденные заданием во время сборки, Дженкинс содержит немного собственного кода для перечисления таких процессов и их уничтожения.

Хотя в вышеупомянутом вопросе упоминается несколько способов преодоления этого, ясно, что рекомендуемый способ - не запускать длительную обработку через шаг задания, а вне Jenkins (например, запускать запланированное задание, чтобы убедиться, что процессы запущены). ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...