如何读取詹金斯管道中的子文件夹

Mik*_*peg 3 jenkins jenkins-pipeline

我正在尝试编写一个管道詹金斯作业,该作业循环遍历特定目录的子文件夹并启动某些内容。问题是访问文件系统。由于某种原因,它似乎根本不读取文件系统,也不读取它自己的工作区。

这是我正在使用的片段

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"
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该文件夹当然存在于服务器上,但运行总是返回第二个回显。

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

说的是……我知道如何检索它吗?例如,有没有办法从 shell 步骤设置 gradle 属性?

谢谢,米歇尔

Mik*_*peg 6

这就是我解决这个问题的方法,运行一个返回输出的 shell

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

然后我就可以使用目录名称循环列表并操作它们。

对于 Windows 来说可能会变成:

def subfolders = bat(script: '@dir /B RuntimeBuild', returnStdout: true).split(/\n\r/)
Run Code Online (Sandbox Code Playgroud)