jenkins声明性管道,使用特定节点的条件

时间:2020-08-14 12:08:29

标签: jenkins jenkins-pipeline jenkins-groovy

我无法使用的管道(声明式):

def parentWorkspace = "${params.WS}"   // comes from upsteam job
def parentNode = "${params.NODENAME}"  // comes from upsteam job

pipeline {  
    agent none
    stages {
    
    stage("checkout source and run tests") {
        steps{
         script {  
          if(parentWorkspace != "null") 
          {  
           agent {
            node{
             customWorkspace "${parentWorkspace} "
             label "${parentNode} "
            } 
           }
        else {
         agent {
            label 'linuxVM'
           }
            
         }
      }
     steps {
            git url: gitLocation, branch: branchName, poll: false
            sh "mvn test ..." 
       }
   }
 }

}

如果“ parentworkspace”变量不为null,请使用具有提供的parentworkspace路径和节点标签的自定义工作区。否则,请使用默认工作区和带有标签“ linux”的节点。有可能吗?

尝试了一些选项无法真正使其起作用。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

尝试在管道块之外定义if条件,如下所示:

def parentWorkspace = "${params.WS}"   
def parentNode = "${params.NODENAME}"  
script {
    if(parentWorkspace != "null") {
        label "${parentNode} "
    }
    else {
        label 'linuxVM'
    }
}
pipeline {
  //your pipeline code
}

要分配工作区,请使用ws(“ $ {params.WS}”)

如果这不能解决问题,请回复。