【问题标题】:Start multiple jars from Jenkins Scripted Pipeline从 Jenkins Scripted Pipeline 启动多个 jars
【发布时间】:2021-03-17 10:46:39
【问题描述】:

我正在尝试在 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 脚本。

请帮忙, 谢谢。

【问题讨论】:

    标签: java jenkins jar jenkins-pipeline executable-jar


    【解决方案1】:

    已经为感兴趣的人找到了解决方案。还添加了一项检查以确保应用程序正确启动。

       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")
             }
          }
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多