build.getActions(javaposse.jobdsl.plugin.actions.GeneratedJobsBuildAction)
.collectMany{ action -> action.modifiedObjects.collect{ it.jobName } }
def action = project.getActions(hudson.plugins.jobConfigHistory.JobConfigHistoryProjectAction)[0]
action.metaClass.getLines = { String timestamp1, String timestamp2 ->
final XmlFile configXml1 = getOldConfigXml(timestamp1);
final String[] configXml1Lines = configXml1.asString().split("\\n");
final XmlFile configXml2 = getOldConfigXml(timestamp2);
final String[] configXml2Lines = configXml2.asString().split("\\n");
final String diffAsString = getDiffAsString(configXml1.getFile(),
configXml2.getFile(), configXml1Lines, configXml2Lines);
final List<String> diffLines = Arrays.asList(diffAsString.split("\n"));
return getDiffLines(diffLines);
}
action.getLines('2017-11-20_12-51-06','2017-11-20_19-35-59')
def since = build.startTimeInMillis
println 'Since : '+new Date(since)
def jobs = build
.getActions(javaposse.jobdsl.plugin.actions.GeneratedJobsBuildAction)
.collectMany{ action -> action.modifiedObjects.collect{ it.jobName } }
.collect{ Jenkins.instance.itemMap[it] }
println 'Count : '+jobs.size()
def filtered = jobs
.collect { it.getAction(hudson.plugins.jobConfigHistory.JobConfigHistoryProjectAction) }
.findAll { action ->
since <= action.jobConfigs[0].parsedDate().time
}
println 'Filtered : '+filtered.size()
filtered.each { action ->
action.metaClass.getDiff = { String timestamp1, String timestamp2 ->
final XmlFile configXml1 = getOldConfigXml(timestamp1);
final String[] configXml1Lines = configXml1.asString().split("\\n");
final XmlFile configXml2 = getOldConfigXml(timestamp2);
final String[] configXml2Lines = configXml2.asString().split("\\n");
getDiffAsString(configXml1.getFile(),
configXml2.getFile(), configXml1Lines, configXml2Lines);
}
println action.getDiff(action.jobConfigs[1].date, action.jobConfigs[0].date)
}
println ''