Jenkins 在节点中运行任务两次

Jenkins 在节点中运行任务两次,jenkins,groovy,Jenkins,Groovy,我正在使用Jenkins管道插件来测试我的项目。我有一个如下形式的Groovy脚本: node { stage("checkout") { //some other code } stage("build") { //some other code } stage("SonarQube Analysis") { //some other code } } 当我有一个要合并到master的功能分支时,我想首先在master

我正在使用Jenkins管道插件来测试我的项目。我有一个如下形式的Groovy脚本:

node {

   stage("checkout") {
     //some other code
   }

   stage("build") {
     //some other code
   }

   stage("SonarQube Analysis") {
     //some other code
   }

}
当我有一个要合并到
master
的功能分支时,我想首先在
master
上执行此过程,然后在功能上执行此过程,并查看SonarQube分析是否在功能上更差

我想要这种东西:

def codeCoverageMaster = node("master")
def codeCoverageFeature = node("feature/someFeature")
if(codeCoverageFeature < codeCoverageMaster) {
   currentBuild.result = "ERROR"
}
def codeCoverageMaster=节点(“主节点”)
def codeCoverageFeature=节点(“feature/someFeature”)
if(codeCoverageFeature

这样做可能吗?

您可以定义一个包含脚本的函数并返回SonarQube结果,然后调用该函数两次并比较结果:

def runBranch(String path) {
  def sonarQubeRes
  node {

    stage("checkout") {
      //some other code
      // Use path supplied to this function
    }

    stage("build") {
      //some other code
    }

    stage("SonarQube Analysis") {
      //some other code
    }

  }
  return sonarQubeRes
}

def codeCoverageMaster = runBranch("master")
def codeCoverageFeature = runBranch("feature/someFeature")
if(codeCoverageFeature < codeCoverageMaster) {
  currentBuild.result = "ERROR"
}
def runBranch(字符串路径){
def声纳Quberes
节点{
阶段(“结帐”){
//其他代码
//使用提供给此函数的路径
}
舞台(“建造”){
//其他代码
}
阶段(“声纳分析”){
//其他代码
}
}
回程声纳
}
def codeCoverageMaster=runBranch(“主”)
def codeCoverageFeature=runBranch(“feature/someFeature”)
if(codeCoverageFeature