Fingerprinting tool uses Gradle Enterprise API generating a report of the builds with task/goals FROM-CACHE
with
fingerprinting duration higher than the value configured:
./fingerprinting --api-key=$KEY --url=$URL --duration=10000 --max-builds=20000 --project=nowinandroid
./gradlew install
cd build/install/fingerprinting/bin
./fingerprinting --api-key=$KEY --url=$URK --duration=10000 --max-builds=20000 --project=nowinandroid
Available at the end of the execution
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ 9 Builds found with tasks/goals cached with FingerPrinting Time > 10s │
│ │
├──────────────────────────────────────────────────────┬──────────────┬─────────────────────┬──────────────────────────────────────────────────────┤
│ │ │ │ │
│ Build Scan │ Project │ Date │ Total Fingerprinting duration FROM-CACHE tasks/goals │
│ │ │ │ │
├──────────────────────────────────────────────────────┼──────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ │ │ │ │
│ https://gradle-enterprise-url.com/s/3asym2ar5gg5a │ nowinandroid │ 22/02/2023 19:45:44 │ 1m 55.386s │
│ │ │ │ │
├──────────────────────────────────────────────────────┼──────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
│ │ │ │ │
│ https://gradle-enterprise-url.com/s/3asym2ar5gg5a │ nowinandroid │ 22/02/2023 19:45:45 │ 2m 5.159s │
│ │ │ │ │
├──────────────────────────────────────────────────────┼──────────────┼─────────────────────┼──────────────────────────────────────────────────────┤
Each execution with results generates a detailed report extended_report.txt
:
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ │
│ 9 builds found with tasks/goals cached with FingerPrinting Time > 10s │
│ │
├─────────────────────────────────────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │ │
│ Build │ https://gradle-enterprise-url.com/s/3asym2ar5gg5a │
│ │ │
├─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │ │
│ Project │ nowinandroid │
│ │ │
├─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │ │
│ Date │ 22/02/2023 19:45:44 │
│ │ │
├─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │ │
│ Task/Goal │ test │
│ │ │
├─────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │ │
│ Tags │ CI,HEAD,Linux,WORKERS8-temurin │
│ │ │
├─────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ Tasks types │
│ │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┬─────────┤
│ │ │
│ :app:hiltAggregateDepsDemoDebug │ 17.513s │
│ https://gradle-enterprise-url.com/s/3asym2ar5gg5a/timeline?outcome=from-cache&task-path=:app:hiltAggregateDepsDemoDebug │ │
│ │ │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┼─────────┤
Name | Description | Default | Required | Example |
---|---|---|---|---|
api-key | String token | Yes | --api-key=$TOKEN_FILE | |
url | Gradle Enterprise instance | Yes | --url=https://ge.acme.dev | |
max-builds | Max builds to be processed | 1000 | No | --max-builds=2000 |
project | Root project in Gradle Enterprise | No | --project=acme | |
duration | Min Task/goal duration. (>= 100000 - 10secs) | Yes | --duration=20000 | |
concurrent-calls | Experiment identifier to process Build scans | 150 | No | --concurrent-calls=200 |
concurrent-calls-cache | Max allowed concurrent request | 10 | No | --concurrent-calls-cache=20 |
It's recommended to specify the project name to limit the cache performance requests. The number of requests per execution is:
Requests = ((Max builds / 1000) + Build attributes requests + Cache performance requests)
Filtering by project we reduce the required requests for cache performance.
Stress tests showed acceptable time results with max-builds
< 30000 when filtering by project. For executions without
project parameter specified we recommend max-builds
< 10000.
We have tested the tool with Java 8, 11 and 17.