2017-01-12 126 views
0

我正在尝试编写一个管道jenkins作业,它通过特定目录的子文件夹循环并启动一些东西。问题是访问文件系统。出于某种原因,它似乎根本没有读取文件系统,也没有自己的工作空间。如何阅读jenkins管道中的子文件夹

这是我使用

node ('label') { 
    workspacePath = '/opt/installersWS' 
    ws(workspacePath){ 
     stage ("test"){ 
      ...some stuff... 
      runtimeBuildDir = new File(workspacePath + "/components") 
      echo runtimeBuildDir.getPath() 
      if (runtimeBuildDir.exists()){ 
       echo "search for subfolders" 
      } else { 
       echo "main folder not existing" 
      } 

     } 
    } 
} 

课程的文件夹现有的服务器上,但在运行始终与第二回波的片段。

更新: 我发现以这种方式给出的所有gradle/java指令都不是针对节点,而是在主节点上运行。这就是为什么我没有找到目录。所以我完全误解了管道是如何工作的。

说什么..任何想法如何检索?有没有办法从shell步骤设置gradle属性?

感谢, 米歇尔

回答

0

这是我解决的方式,运行返回的输出

def subfolders = sh(returnStdout: true, script: 'ls -d RuntimeBuild/*').trim().split(System.getProperty("line.separator")) 

然后,我能够与目录的名称cicle列表和操作壳他们。

1

下面解决了我的问题。它可以帮助正在寻找相同的人。 子文件夹可以添加到列表使用函数,返回像下面的管道中的目录列表。

@NonCPS 
def readDir() 
{ 
    def dirsl = [] 
    new File("${workspace}").eachDir() 
    { 
     dirs -> println dirs.getName() 
     if (!dirs.getName().startsWith('.')) { 
      dirsl.add(dirs.getName()) 
     } 
    } 
    dirsl 
} 

然后在你的管道脚本中,像下面这样调用函数并做任何需要的操作。

stage ('Build'){ 

    dirsl = readDir() 
    def size = dirsl.size() 
    print size 
    for (int i = 0; i < size; i++) { 
     "Do whatever appropriate" 
    } 
} 
相关问题