2017-04-21 90 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