2017-10-16 16 views
0

Je veux imprimer la taille des répertoires de mon JenkinsnodesObtenir la taille de workspacedirectories de Jenkinsnodes via le script

Mon script:

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() ) 

    } 

} 

Mais avec ce script je reçois la taille « 0 » (si dir est vide) ou "4096" pour un dir qui est 28mb.

J'essaie la même chose avec fichier

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

Mais ici j'obtiens l'erreur:

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

Parce que le maître est un Linuxserver et quelques noeuds d'un Windowsservers qui créent une mauvaise emplacementfichier.

Existe-t-il une solution pour afficher la taille de dir correcte en mb pour tous les nœuds?

Répondre

0

Solution:

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 
}