build-time-tracker-plugin icon indicating copy to clipboard operation
build-time-tracker-plugin copied to clipboard

Add a reporter thats sends the timings to a simple endpoint

Open arcadefire opened this issue 6 years ago • 3 comments

I think it could be useful having a new reporter (something like NetworkReporter) that sends the timings entries encoded in JSON to a simple remote endpoint, so to internally collect data within an organization and perform analysis on it.

If you think it could be useful too, I can create a small PR to showcase my idea.

arcadefire avatar May 03 '19 14:05 arcadefire

I'm researching a complete CI setup that would allow us to gather data about builds on multiple pipelines. I think this example would be very useful @arcadefire. What did you plan as merging strategy for target endpoint? Would you simply upload new file, rewriting contents? I'm concerned about case, where multiple builds pick up historic stats, perform build and append data about current one, overwriting the other.

dbarwacz avatar May 24 '19 15:05 dbarwacz

My initial idea was to just send a post request containing the same JSON generated by the JsonReporter to a remote endpoint that logs the data on a DB. I haven't thought about a merging strategy.

For now, my simple endpoint would just append the entries in order to create some sort of historical stats table, used to observe the project's overall compilation times trend.

Since a PR says more than a thousand words, I condensed here my proposal: https://github.com/passy/build-time-tracker-plugin/pull/96.

arcadefire avatar May 28 '19 13:05 arcadefire

Thank you very much for taking the time to compile the results. I understand now, because (in your custom reporter) you use run(List<Timing> timings), you don't need to upload aggregated xml report file, but can instead upload this build data. Is that correct? I'll use your example to test locally so that I can check how easy it is to visualise/gain insights.

During my research, I prepared minimal (local) installation for nebula plugin (https://github.com/nebula-plugins/gradle-metrics-plugin) but I found it very hard to query/visualise that data in kibana later. Your approach looks very promising in that regard.

dbarwacz avatar May 28 '19 15:05 dbarwacz