Last active
May 13, 2016 16:49
-
-
Save kulmam92/502d355b9b2870ed157582c5041cd8e3 to your computer and use it in GitHub Desktop.
Get top n bytes from the last change log using Groovy PostBuild
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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