【发布时间】:2013-02-27 16:04:20
【问题描述】:
有一些测试在应用服务器(JBoss)中运行;我们想在 Jenkins 中集成这些测试。
在 Jenkins 中有这些步骤(所有步骤都是 Ant 步骤):
- ...(其他步骤)
- 在后台启动服务器
- 运行测试
- 停止服务器
- ...(其他步骤)
服务器需要在后台启动才能让以下任务完成它们的工作。我编写了以下脚本来模仿这一点:
export LAUNCH_JBOSS_IN_BACKGROUND=1
./run.sh &
sleep 400
cd /testTriggerLocation
ant run-tests
kill `cat $jBossHome/4.0.5/bin/jboss.pid`
run.sh 启动服务器,并在启动后将 JVM 进程 ID 存储在 jboss.pid 中。
在正常方式(前台进程)中,JBoss 需要大约 100 秒才能启动,但在这里它需要一个取决于睡眠参数的值。如果我放 200 秒,则需要 ~ 190 - 210 秒,如果是 300 秒,则需要 290 - 310 秒;问题是,如果在服务器启动之前触发测试,它们显然会失败。有没有办法同步这个?或者也许是另一种方式来做到这一点?
【问题讨论】:
-
为什么需要 fork run.sh?
-
run.sh 或它启动的任何内容是否会生成日志?如果是这样,您可以在这里放置一些东西来监视该日志中的某些内容..说“开始”或打印出来的任何内容说它准备好了...然后让脚本继续..而不仅仅是睡觉。
-
@EarlGray 因为如果它是一个前台进程,它将在 Jenkins 中无限期运行,然后测试将不会运行。
-
@jco.owens 实际上,当它完成时,它会写入
jboss.pid文件;谢谢你的提示,我会试试的。
标签: java linux shell jboss jenkins