在 Jenkins 作业后保持构建流程运行

问题描述 投票:0回答:4

我试图在 Jenkins 工作完成后保持 Web 进程运行。

我研究了ProcessTreeKiller并尝试使用

BuildId
,如下所示,但它似乎不起作用:

BUILD_ID=dontKillMe /usr/apache/bin/httpd

我的命令(我想让它保持运行):

rails s &

如何解决这个问题?

enter image description here

apache jenkins configuration
4个回答
6
投票

您将其放入您的 执行 Shell 构建步骤中,而不是作为 jenkins 构建过程变量(这就是您在屏幕截图中使用 EnvInject 插件所做的事情)

因此,如果您想运行

rails &
,请执行以下操作:
BUILD_ID=dontKillMe rails &


2
投票

尝试:

(
  set -e
  export BUILD_ID=dontKillMe
  export JENKINS_NODE_COOKIE=dontKillMe
  rails &
) &

0
投票

如果这是 Jenkinsfile 中的最后一个阶段(就像我的情况),您可以使用

BUILD_ID=dontKillMe
来解决该问题,如下所示:

stage("Run"){
  steps{
    withEnv(['BUILD_ID=dontKillMe']) {
      script{
        sh '<YOUR COMMAND HERE>'
      }
    }
  }
}

就我而言,我在 Ubuntu 中有 Jenkins,并且我想永远运行 jenkins 文件的最后阶段,所以我使用了:

stage("Run app service forever"){
  steps{
    withEnv(['BUILD_ID=dontKillMe']) {
      script{
        kubeconfig(credentialsId: 'my_minikube_config_file', serverUrl: 'https://###.###.###.###:8443') {
          sh 'kubectl port-forward --address 0.0.0.0 services/tecapp 5000:5000'
        }
      }
    }
  }
}

注意:不要在命令末尾添加 &,如下所示:

stage("Run"){
  steps{
    withEnv(['BUILD_ID=dontKillMe']) {
      script{
        sh '<YOUR COMMAND HERE> &'
      }
    }
  }
}

当我使用&时,舞台不会永远运行。


-2
投票

通过

启动 jenkin 服务器
java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8090

代码位于后台运行的 jenkinfile

  stage("Starting API Server"){
    withEnv(['BUILD_ID=dontkill']) {
         sh 'mvn exec:java -Dexec.mainClass="APPLICATION_SERVER.App" & '
        }
   }
© www.soinside.com 2019 - 2024. All rights reserved.