2017-04-21 191 views
0

我想使用一些常规代码遍历工作空间目录,但作业失败,即使该目录存在java.io.FileNotFoundException: /home/user/JENKINS2_STATE/workspace/[email protected]Jenkins管道 - Groovy遍历pwd()结果java.io.FileNotFoundException

管道:

import groovy.io.FileType 
import com.cloudbees.groovy.cps.NonCPS 

@NonCPS 
def traverseHelper() { 
    new File(pwd()).traverse(type: FileType.FILES) { 
     println it.path 
    } 
} 

pipeline { 
    agent any 
    stages { 
     stage('Build') { 
      steps { 
       parallel(
        "Linux": { 
         node(label: 'lnx') { 
          script { 
           //checking out from git here 
           traverseHelper() 
          } 
         } 
        }, 
        "Windows": { 
         node(label: 'win') { 
          script { 
           //do Windows stuff here 
          } 
         } 
        } 
       ) 
      } 
     } 
     //other stages here 
    } 
} 

Groovy的代码工作在本地(不@NonCPSSystem.getProperty("user.dir")更换pwd())。

回答

2

问题是groovy脚本在主服务器上执行,因此当您执行new File(...)时,您将在主服务器上创建文件指针,而不是从服务器/节点/代理程序。相反,请使用Pipeline Utility Steps plugin中的findFiles