【问题标题】:Jenkins job stuck after command startJenkins 作业在命令启动后卡住
【发布时间】:2019-08-01 16:27:05
【问题描述】:

我在 jenkins 工作中遇到问题,我隔离到一个命令中。所以我创建了另一个单独的作业来尝试修复它。

所以在这项名为“teste”的工作中,我只有一个命令:

start cmd /k call "C:\Program Files\myDir\myBat.bat"

这会打开一个单独的 cmd 窗口,运行我的 bat 文件,它应该会“永远”运行。

但问题是,当我这样做时,我的 jenkins 工作一直卡在“退出 0”操作中,我不知道它来自哪里。 那是控制台:

[EnvInject] - Loading node environment variables.
Building remotely on Machine01 in workspace C:\workspace\teste
[teste] $ cmd /c call C:\...dir\jenkins.bat

C:\workspace\teste>start cmd /k call "C:\Program Files\myDir\myBat.bat" 

C:\workspace\teste>exit 0 

然后它一直卡在那个点。

myBat.bat 内容示例:

echo hi
pause

有什么方法可以在另一个窗口中进行此调用而无需等待其完成?

【问题讨论】:

  • 试试start "" cmd /k "C:\Program Files\myDir\myBat.bat"...
  • 感谢@aschipfl,但没有用..仍然是同样的问题
  • 其实我换个方式解释一下。我想在另一个窗口中触发一个 bat 文件(这已经完成),但无论这个其他脚本发生什么,我只想能够完成我当前的控制台(工作)。所以问题是jenkins作业仍然永远运行,我希望它在触发这个“start cmd /k ....”后完成
  • 好的@Compo,我添加了一个内容,您可以将其放入 .bat 文件中进行模拟。它的行为方式完全相同。当它暂停时,新的 cmd 永远不会结束,但我的主 cmd 仍然没有退出。如果有人让它与那个脚本一起工作,你救了我的命。
  • @Compo jenkins.bat 的内容正是顶部突出显示的那一行!这行是 jenkins 自己打印的,当它将我的所有脚本放入服务器的单个文件中并执行它时。我的工作脚本只有一行,我已经提供了!开始 cmd /k 调用 "C:\Program Files\myDir\myBat.bat"

标签: batch-file jenkins cmd


【解决方案1】:

我解决了我的问题,改变了我调用其他 .bat 的方式,通过 powershell 调用它。但是由于我是来自一个bat文件,所以我使用该命令发送一个powershell命令,调用我的另一个bat文件。 另外,我添加了另一行将 jenkins BUILD_ID 更改为假的,所以它不会杀死它。

所以我从这一行改了:

start cmd /k call "C:\Program Files\myDir\myBat.bat"

对此:

set BUILD_ID=dontKillMe
powershell -Command "Start-Process 'C:\Program Files\myDir\myBat.bat'"

我希望有一天它对某人有所帮助。

【讨论】:

  • 谢谢!!!!!!救生员!
猜你喜欢
  • 2019-10-09
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多