2017-10-16 15 views
0

를 통해 Jenkinsnodes에서 workspacedirectories의 크기를 가져옵니다 내 Jenkinsnodes에서 디렉토리의 크기를 인쇄 할스크립트

내 스크립트 :

import hudson.node_monitors.* 
import hudson.slaves.* 
import Jenkins.* 

jenkins = Jenkins.instance 

for (slave in jenkins.nodes) { 
    wsRoot = slave.getWorkspaceRoot() 
    println("Nodename:  " + slave.getNodeName()) 

    for (dir in wsRoot.list()) { 

    println("---------------------------------------------------------") 
    println(" dirname: " + dir) 
    println(" dirspace: " + dir.length() ) 

    } 

} 

그러나이 스크립트

내가 크기로 얻을 "0"(dir이 비어 있다면) 또는 "4096"(dir은 28MB).

나는 파일

for (dir in wsRoot.list()) { 
    println("-------------------------------------------------------") 
    println(" dirname:  " + dir) 
    File DirFiles = new File(dir.toString()) 
    def sampleDirSize = DirFiles.directorySize() 
    println(" DirSpace:  " + sampleDirSize ) 
    } 

와 같은 시도하지만, 여기에 내가 오류를 얻을 : 마스터가 Linuxserver 및 일부 노드 잘못된 Filelocation을 만들 Windowsservers입니다

java.io.FileNotFoundException: /home/jenkins/C:\Jenkins-Slave\jars\workspace\Testprojekt 

때문입니다.

모든 노드에 대해 db 크기가 mb로 정확하게 표시되는 솔루션이 있습니까?

답변

0

솔루션 :

import hudson.node_monitors.* 
import hudson.slaves.* 
import Jenkins.* 

nByte = 0 
nByteDir = 0 

jenkins = Jenkins.instance 

for (slave in jenkins.nodes) { 
    wsRoot = slave.getWorkspaceRoot() 
    println("Nodename: " + slave.getNodeName()) 

    for (dir in wsRoot.list()) { 
    nByteDir = 0 
    println("=====================================================================") 
    println(" dirname: " + dir) 

    showFiles(dir) 

    println(" Byte Dir: " + nByteDir) 
    } 

    println("=====================================================================") 
    println("Byte Total: " + nByte) 
    println("#####################################################################") 
} 


def showFiles(dir) { 
    for (files in dir.list()){ 
     if(files.isDirectory() ) { 
      showFiles(files); 
     } else { 
      ByteCounter(files.length()) 
     } 
    } 
} 

def ByteCounter (c) 
{ 
    nByte = nByte + c 
    nByteDir = nByteDir + c 
}