如何在声明性jenkins管道完成阶段后保持进程运行

时间:2017-12-01 06:05:10

标签: jenkins-pipeline



pipeline {
  agent none
  stages {
   stage('Server') {
      agent{
          node {
            label "xxx"
            customWorkspace "/home/xxx/server"
          }
        }
      
      steps {
        sh 'node server.js &'
        //start server
      }
    }
   stage('RunCase') {
      agent{
          node {
            label 'clientServer'
            customWorkspace "/home/xxx/CITest"
          }
        }

      steps{
        sh 'start test'
        sh  'run case here'
      }
    }
  }

}




我创建了Jenkins管道。我想做的是:
1.在服务器节点启动服务器 2.在测试节点开始测试。

但是,我发现第二阶段启动时服务器进程将关闭。 那么如何保持服务器启动直到我的第二阶段测试工作完成。我尝试使用&,仍然无法正常工作。它似乎会杀死我在第一阶段开始的所有过程。

1 个答案:

答案 0 :(得分:1)

一种解决方案是尝试以“并行”模式启动两个阶段。有关更多信息,请参阅以下两个文件:parallel-declarative-blog jenkins-pipeline-syntax。但要小心,因为没有确保,第一阶段在第二阶段开始之前开始。也许您需要等待测试。以下是Jenkinsfile的一个示例:

pipeline {
agent none
stages {
    stage('Run Tests') {
        parallel {
            stage('Start Server') {
                steps {
                    sh 'node server.js &'
                }
            }
            stage('Run Tests) {
                steps {
                    sh  'run case here'
                }
            }
        }
    }
}
}

另一种解决方案是在后台启动节点服务器。为此,您可以尝试使用其他工具,例如nohuppm2