问题描述
我正在尝试在 Jeknins 中针对两个不同的 jar 运行一些集成测试。问题是我想从 Jenkis 脚本操作 jars 的启动/停止,但我不知道具体如何操作。
目前我有这样的事情:
stage('Start ZZ&ZZT') {
dir('workingdir') {
sh 'java -jar zenzefiT.jar'
sh 'java -jar zenzefi.jar'
}
}
这不能正常工作,因为第一个 jar 启动然后挂起。 如果我做这样的事情,
stage('Start ZZ&ZZT') {
dir('workingdir') {
sh 'java -jar zenzefiT.jar &'
sh 'java -jar zenzefi.jar &'
}
}
罐子没有启动。
我想要一个解决方案来启动 jars(也许就像等待 jars 正常启动然后继续),有另一个阶段我可以运行一些测试然后停止 jars(这可以通过终止进程来完成)我猜是通过端口)。 我也尝试过在机器上使用 shell 脚本。
请帮忙, 谢谢。
解决方法
已经为感兴趣的人找到了解决方案。还添加了一项检查以确保应用程序正确启动。
stage('Start ZZ&ZZT') {
dir('workingdir') {
withEnv(['JENKINS_NODE_COOKIE=dontKill']) {
sh 'java -jar jar1.jar &'
sh 'java -jar jar2.jar &'
}
def isZZTrunning = sh(returnStatus:true,script: 'sudo lsof -t -i:62000')
while(isZZTrunning == 1) {
isZZTrunning = sh(returnStatus:true,script: 'sudo lsof -t -i:62000')
echo "Waiting for Jar1 to start"
sleep(time: 1,unit: "SECONDS")
}
def isZZrunning = sh(returnStatus:true,script: 'sudo lsof -t -i:61000')
while(isZZrunning == 1) {
isZZrunning = sh(returnStatus:true,script: 'sudo lsof -t -i:61000')
echo "Waiting for JAr2 to start"
sleep(time: 1,unit: "SECONDS")
}
}
}