Javascript karma自定义启动器:要运行包含curl命令的bash脚本,它必须返回什么?
为了运行javascript测试,我编写了一行Bash脚本,通过curl在Teamcity中触发CI构建 我希望它在更改一个javascript测试文件后自动运行。 我已经设置了Karma Testrunner来监视文件系统。这很有效 现在我想运行我的bash脚本一次,但我不知道它应该返回什么,以便karma知道它已成功启动Javascript karma自定义启动器:要运行包含curl命令的bash脚本,它必须返回什么?,javascript,bash,shell,testing,karma-runner,Javascript,Bash,Shell,Testing,Karma Runner,为了运行javascript测试,我编写了一行Bash脚本,通过curl在Teamcity中触发CI构建 我希望它在更改一个javascript测试文件后自动运行。 我已经设置了Karma Testrunner来监视文件系统。这很有效 现在我想运行我的bash脚本一次,但我不知道它应该返回什么,以便karma知道它已成功启动 karma start --browsers ~/bin/tcbuild.sh 结果 INFO [karma]: Karma v0.10.9 server starte
karma start --browsers ~/bin/tcbuild.sh
结果
INFO [karma]: Karma v0.10.9 server started at http://localhost:9876/
INFO [launcher]: Starting browser /home/knb/bin/tcbuild.sh
ERROR [launcher]: Cannot start /home/knb/bin/tcbuild.sh
INFO [launcher]: Trying to start /home/knb/bin/tcbuild.sh again.
ERROR [launcher]: Cannot start /home/knb/bin/tcbuild.sh
INFO [launcher]: Trying to start /home/knb/bin/tcbuild.sh again.
但是脚本实际上已经开始了(并在几秒钟内触发了3次构建),但是karma没有意识到这一点
我希望karma尝试只启动一次shell脚本。
剧本必须返回什么业力
我必须“守护”shell脚本吗
脚本~/bin/tcbuild.sh
如下所示,正如我所说,它是一个单行程序:
#!/bin/bash
curl --user myacc:secrit --anyauth --url "http://my.ciserver.com:8111/app/rest/buildQueue" --request POST --header "Content-Type:application/xml" --data-binary @/opt/teamcity/build-js-qunit.xml
更新:
我的机器叫wb3。Karma启动的Chrome实例监听端口9877
lsof -u knb -i | grep 9877
屈服
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 57786 knb 12u IPv4 8271405 0t0 TCP *:9877 (LISTEN)
node 57786 knb 14u IPv4 8272554 0t0 TCP wb3:9877->wb3:33503 (ESTABLISHED)
node 57786 knb 19u IPv4 8274193 0t0 TCP
wb3:9877->wb3:33507 (ESTABLISHED)
node 57786 knb 22u IPv4 8274196 0t0 TCP wb3:9877->wb3:33511 (ESTABLISHED)
chrome 57978 knb 80u IPv4 8270580 0t0 TCP wb3:33503->wb3:9877 (ESTABLISHED)
chrome 57978 knb 81u IPv4 8270583 0t0 TCP wb3:33504->wb3:9877 (ESTABLISHED
似乎我需要保持curl命令的活动状态并与节点通信。很可能它以非零状态退出。尝试添加类似于
RC=$?;echo“rc=$rc at$(date)”>>/var/tmp/tcbuild.log;在curl调用后退出$RC
。谢谢@user3159253,我尝试了你的代码片段,我以前也独立尝试过在curl命令后退出0,但这不会改变karma的行为。我怀疑我必须让进程保持活动状态和/或打开一个套接字,或其他什么。提到浏览器脚本应该有一个参数,一个id为的URL,应该传递给服务器以正确识别浏览器。@user3159253但在该句前面的一行,在代码示例中,它说karma start--browsers/usr/local/bin/custom browser.sh
。这是矛盾的。没有给定id参数的URL。这一行只说明karma使用3个参数运行,“开始”,“浏览器”,以及自定义浏览器命令的路径。事实上,它没有说明如何调用此自定义浏览器命令。