【发布时间】:2019-01-07 14:39:14
【问题描述】:
我正在尝试使用 Windows 批处理命令从 Jenkins 作业启动两个进程:
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 slave 是从命令提示符启动的,我可以看到进程窗口显示了半秒钟。我的感觉是 Jenkins 正在杀死命令行会话以及这些进程。
问题:如何在Jenkins中执行不被杀死的windows批处理命令?
【问题讨论】:
-
也许在您的批处理文件末尾添加
pause以查看是否出现错误。这可能是powershell脚本路径的语法错误。我无法测试这个,没有詹金斯环境.. -
@GerhardBarnard - 是的,这是有道理的。我现在无法连接到工作以尝试,但我会尝试并回来。
-
一切都好。试过后告诉我。
-
@GerhardBarnard - PAUSE 被 Jenkins 忽略(它输出 Press any key... ,终止进程并进入下一步)。但是,我意识到我没有提出正确的问题,并基于此提供了答案。谢谢。
-
酷,很高兴我的无用帮助实际上有所帮助:)
标签: batch-file jenkins process