从 Jenkins 脚本管道启动多个 jar

问题描述

我正在尝试在 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")
         }
      }
   }