我有一个Jenkins构建,第一部分将在localhost上启动一个Web服务器,构建到达应用程序服务点
Running "connect:server_jenkins" (connect) task
Waiting forever...
Started connect web server on http://localhost:3000
我的问题是,在此之后,我无法做任何其他事情,我不会运行其他shell命令,直到此进程具有我相信的退出代码。在这一点上,我甚至会愉快地触发另一个构建。
这样做的目的是应用程序得到设置,然后我运行了功能测试(黄瓜)。
有人有任何关于接近这个的建议吗?
由于
答案 0 :(得分:1)
异步生成新进程取决于您的OS / Shell:
MS TechNet, Command-Line Reference, Start:
启动单独的命令提示符窗口以运行指定的程序或命令。
Bash Reference Manual, 3.2.5 Coprocesses:
coprocess
是一个以coproc
保留字开头的shell命令。协同进程在子shell中异步执行,就好像命令已使用'&'
控制运算符终止,...
另请参阅How do you use the command coproc in Bash?,其中包含其广为接受的答案。
要防止Jenkins在作业完成时终止所有进程,请参阅Use Jenkins > ProcessTreeKiller:
为了可靠地终止在构建期间由作业生成的进程,Jenkins包含一些本机代码来列出这些进程并将其终止。
...
如果你的构建想让守护进程落后......
...更改Jenkins的ProcessTreeKiller正在寻找的环境变量BUILD_ID。这将导致Jenkins假设你的守护进程不是由Jenkins构建产生的。
BUILD_ID=dontKillMe
我在 构建 步骤→ 执行Windows批处理命令 →命令<中尝试了以下操作/ EM>:
start ..\..\jobs\<job's name>\endless.cmd
(相对路径取决于管理Jenkins →配置系统→ 高级... →工作区根目录,我使用${JENKINS_HOME}/workspace/${ITEM_FULLNAME}
)
endless.cmd
包含:
set BUILD_ID=dontKillMe
ping -t localhost
它起作用了:
cmd.exe
和ping.exe
,继续运行由于您在生成异步进程后立即继续构建,因此您可能需要等待一段时间,或者在真正继续之前检查文件是否已存在等。