Add a reporter thats sends the timings to a simple endpoint
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.
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.
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.
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.