通过脚本从 Jenkinsnodes 获取工作空间目录的大小
Get size of workspacedirectories from Jenkinsnodes via Script
我想从我的 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”(如果目录为空)或“4096”(对于 28mb 的目录)。
我尝试对文件进行同样的操作
for (dir in wsRoot.list()) {
println("-------------------------------------------------------")
println(" dirname: " + dir )
File DirFiles = new File(dir.toString())
def sampleDirSize = DirFiles.directorySize()
println(" DirSpace: " + sampleDirSize )
}
但是我得到了错误:
java.io.FileNotFoundException: /home/jenkins/C:\Jenkins-Slave\jars\workspace\Testprojekt
因为 master 是 Linuxserver 而一些节点是 Windowsservers,这会创建错误的文件位置。
是否有解决方案可以显示所有节点的正确目录大小(以 mb 为单位)?
解法:
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
}
我想从我的 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”(如果目录为空)或“4096”(对于 28mb 的目录)。
我尝试对文件进行同样的操作
for (dir in wsRoot.list()) {
println("-------------------------------------------------------")
println(" dirname: " + dir )
File DirFiles = new File(dir.toString())
def sampleDirSize = DirFiles.directorySize()
println(" DirSpace: " + sampleDirSize )
}
但是我得到了错误:
java.io.FileNotFoundException: /home/jenkins/C:\Jenkins-Slave\jars\workspace\Testprojekt
因为 master 是 Linuxserver 而一些节点是 Windowsservers,这会创建错误的文件位置。
是否有解决方案可以显示所有节点的正确目录大小(以 mb 为单位)?
解法:
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
}