spotify / XCMetrics

XCMetrics is the easiest way to collect Xcode build metrics and improve developer productivity.
https://xcmetrics.io
Other
1.1k stars 77 forks source link

Differentiate between RichNotificationExtension and Main target builds #72

Closed paulemmanuel-garcia closed 2 years ago

paulemmanuel-garcia commented 2 years ago

Hello,

When querying XCMetrics for the main target app build time I have also the build time for the RichNotificationExtension. When doing median calculation it makes the results flaky as the extension takes a lot less time to build.

Is there a way to differentiate those two? Do you have suggestion on how to workaround that issue?

On our CI we are using a cloud based provider and it seems that the machine name is changing for each pipeline, so by aggregating first by machine name I get coherent results. But this solution won't work for local developer machines. Furthermore, as we are monitoring success builds for the same build I can have the main app succeeding but the extension failing and it will not be a failed build.

Thank you very much

BalestraPatrick commented 2 years ago

Have you tried computing the median by first aggregating for the target name? This should allow you to accurately compute the build times for each of your targets: https://github.com/spotify/XCMetrics/blob/ac8ce19e52ed95cab6f4579ba3e07bdafd55698d/proto/xcmetrics/v1/xcmetrics.proto#L34

paulemmanuel-garcia commented 2 years ago

Hello,

Thank you very much for your answer.

In the build_targets table I have lines for (non exhaustive list for example):

name
Write all-product-headers.yaml
Compile Swift source files
Process product packaging
Run custom shell script 'Run Script'

I don't see any "proper" target name. I think that is why I discarded this table when doing my queries because it did not seem relevant.

Is it something expected?

BalestraPatrick commented 2 years ago

I think you're looking at the build steps instead of build targets: https://github.com/spotify/XCMetrics/blob/ac8ce19e52ed95cab6f4579ba3e07bdafd55698d/proto/xcmetrics/v1/xcmetrics.proto#L50-L67

You can see a bunch of example data in the tables in the introductory video: https://www.youtube.com/watch?v=kgdeqcYJKfo&t=2s

paulemmanuel-garcia commented 2 years ago

Thank you for your answer, I was able to find the proper target name in the build_targets but I still have all those intermediary steps in this table.

Thank you very much I think it can be closed.