2013-02-27 89 views
1

在应用程序服务器(JBoss)中运行了一些测试;我们希望在Jenkins中整合这些测试。根据后台进程启动进程

在詹金斯有下列步骤(所有步骤都是蚂蚁步):

  • ...(其他步骤)在后台
  • 启动服务器
  • 运行测试
  • 停止服务器
  • ...(其他步骤)

服务器需要以ba ckground为了让下列任务能够完成他们的工作。我写了下面的脚本来模拟这个:

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启动服务器,它启动后它存储在jboss.pid JVM进程ID。

以正常的方式(前台进程)JBoss需要大约100秒才能启动,但在这里它取决于睡眠参数的值。如果我把200秒放在〜190 - 210秒之间,如果是300秒,则需要290 - 310秒;问题是如果在服务器启动之前触发测试,他们显然会失败。有没有办法同步这个?或者也许另一种方式来做到这一点?

+0

为什么你需要到餐桌run.sh? – 2013-02-27 16:23:58

+0

run.sh或它开始产生日志吗?如果是这样,你可以在这里看到某些东西在这个日志中,说出“开始”或任何它打印出来说它准备好去...然后让脚本继续..而不是只是一个睡眠。 – 2013-02-27 16:40:10

+0

@EarlGray因为如果它是一个前台进程,它将无限期地在Jenkins中运行,然后测试将不会运行。 – m3th0dman 2013-02-27 16:59:15

回答

0

您可能想要使用一个简单的进程管理器,如supervisordGod,它可以在运行测试时为您守护进程。

在我的情况下,使用上帝,我会跑:

god -c my-project.god 
ruby test-runner.rb 
god terminate