Skip to content

Instantly share code, notes, and snippets.

@kulmam92
Last active May 13, 2016 16:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kulmam92/502d355b9b2870ed157582c5041cd8e3 to your computer and use it in GitHub Desktop.
Save kulmam92/502d355b9b2870ed157582c5041cd8e3 to your computer and use it in GitHub Desktop.
Get top n bytes from the last change log using Groovy PostBuild
import hudson.FilePath;
// Size(in byte) of log that you want to display.
def logLength = 400
def myBuildStatus = manager.build.result.toString()
//manager.listener.logger.println("$myBuildStatus");
//manager.logContains("^Build FAILED.")
if(myBuildStatus == "SUCCESS") {
return
}
def myWorkdSpace = manager.envVars["WORKSPACE"]
//manager.listener.logger.println("${myWorkdSpace}");
//def myJobName = manager.build.project.name
//manager.listener.logger.println("${myJobName}");
//def item = hudson.model.Hudson.instance.getItem("myJobName")
//def myNodeName = manager.build.getBuiltOn().getNodeName()
//manager.listener.logger.println("${myNodeName}");
// This is required when you want access workspace in the groovy postbuild
channel = manager.build.workspace.channel
manager.listener.logger.println("$channel");
def files = buildFileList(myWorkdSpace)
def buildFileList(dirname) {
def files = [:]
def dir = new hudson.FilePath(channel, dirname)
//manager.listener.logger.println("$dir");
if( dir.directory ) {
dir.list().each {
//manager.listener.logger.println("$it");
def path = it.toString()
if( it.directory ){
files << buildFileList(path)
} else if ( path.matches('.+\\.log') ) {
//manager.listener.logger.println("$path");
def myTimeStamp= new hudson.FilePath(channel, path).toVirtualFile().lastModified()
files[path] = myTimeStamp
}
}
}
return files
}
manager.listener.logger.println("Discovered ${files.size()} files:")
def modifiedTime = 0
def newestModified
files.each { filename, modified ->
if(modified > modifiedTime) {
modifiedTime = modified
newestModified = filename
}
//manager.listener.logger.println("${filename}' '${modified}' found")
}
if(newestModified) {
manager.listener.logger.println("############################################################")
manager.listener.logger.println("Last modified log file is $newestModified")
manager.listener.logger.println("############################################################")
def myLogSize = 0
def totalLogSize = new hudson.FilePath(channel, newestModified).length()
if( totalLogSize <= logLength ){
myLogSize = totalLogSize
} else {
myLogSize = totalLogSize - logLength
}
def myLog = new hudson.FilePath(channel, newestModified).readFromOffset(myLogSize)
manager.listener.logger.println("$myLog")
manager.listener.logger.println("############################################################")
manager.listener.logger.println("End of Last modified log file")
manager.listener.logger.println("############################################################")
manager.listener.logger.println("")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment