有一些测试在应用服务器(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 秒才能启动,但在这里它需要一个取决于 sleep 参数的值。如果我放 200 秒,则需要 ~ 190 - 210 秒,如果是 300 秒,则需要 290 - 310 秒;问题是,如果在服务器启动之前触发测试,它们显然会失败。有没有办法同步这个?或者也许是另一种方式来做到这一点?