Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vacxe/build-time-tracker
https://github.com/vacxe/build-time-tracker
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/vacxe/build-time-tracker
- Owner: Vacxe
- License: apache-2.0
- Created: 2023-06-09T12:59:09.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2023-10-17T00:37:36.000Z (about 1 year ago)
- Last Synced: 2024-10-10T17:09:43.962Z (3 months ago)
- Language: Kotlin
- Size: 148 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# build-time-tracker
Gradle plugin that prints the time taken by the tasks in a build.
See [Gradle Plugin Portal](https://plugins.gradle.org/plugin/io.github.vacxe.build-time-tracker) for usage
instructionsYou can customize the plugin as follows:
## Reporters
### `ConsoleConfiguration`Parameters:
* `minDuration: Duration` - `optional` minimum task duration for report, default `0` *(all tasks included)*
* `sorted: Boolean` - `optional` sort by duration, default `false`
* `take: Int` - `optional` take first N task from build, default `Int.MAX_VALUE` *(take all)*`build.gradle.kts`:
```
buildTimeTracker {
consoleConfiguration.set(ConsoleConfiguration(Duration.ofMillis(200))
}
```Console output:
```
Build finished: 0.643s:first | 0.229s | 35.61%
:second | 0.412s | 64.07%
```### `CSVConfiguration`
Parameters:
* `reportFile: String` - `required` path for report file
* `minDuration: Duration` - `optional` minimum task duration for report, default `0` *(all tasks included)*
* `includeSystemUserName: Boolean` - `optional` add username to report, default `false`
* `includeSystemOSName: Boolean` - `optional` add os name to report, default `false``build.gradle.kts`:
```
buildTimeTracker {
csvConfiguration.set(CSVConfiguration("${project.buildDir}/report/buildStats.csv", Duration.ofMillis(200), true, true))
}
````buildStats.csv` output:
```
:first, 229, 2023-06-12T04:59:05.621Z, 2023-06-12T04:59:05.850Z, myusername, Windows 11
:second, 411, 2023-06-12T04:59:05.852Z, 2023-06-12T04:59:06.263Z, myusername, Windows 11
```### `MarkdownConfiguration`
Parameters:
* `reportFile: String` - `required` path for report file
* `minDuration: Duration` - `optional` minimum task duration for report, default `0` *(all tasks included)*
* `withTableLabels: Boolean` - `optional` add table labels, default `true`
* `sorted: Boolean` - `optional` sort by duration, default `false`
* `take: Int` - `optional` take first N task from build, default `Int.MAX_VALUE` *(take all)*`build.gradle.kts`:
```
buildTimeTracker {
markdownConfiguration.set(MarkdownConfiguration("${project.buildDir}/report/buildStats.md", Duration.ofMillis(0)))
}
````buildStats.md` output:
```
#### Build finished: 0.638s
|Task|Duration|Proportion|
|---|---|---|
|:first|0.223s|34.95%|
|:second|0.413s|64.73%|
```### `InfluxDBConfiguration`
data class InfluxDBConfiguration(
val url: String,
val token: String,
val org: String,
val bucket: String,
val minDuration: Duration = Duration.ZERO
) : SerializableParameters:
* `url: String` - `required` URL for InfluxDB (*Flux*) instance. Example `http://localhost:8086/`
* `token: String` - `required`
* `org: String` - `required`
* `bucket: String` - `required`
* `measurementName: String` - `optional` name for metric, default `buildTime`
* `minDuration: Duration` - `optional` minimum task duration for report, default `0` *(all tasks included)*`build.gradle.kts`:
```
buildTimeTracker {
influxDBConfiguration.set(InfluxDBConfiguration("http://192.168.1.100:8086/", "myToken", "myOrg", "MyBucket", "SampleAppBuildTime"))
}
```
Output:> Grafana + InfluxDB
>
![influx_grafana.png](docs%2Fimages%2Finflux_grafana.png)The output data can be grouped by `buildUUID` to calculate a total sum for the individual builds
## Minimum Requirements
- Java 11
- Gradle 6.1## License
Released under [Apache License v2.0](LICENSE)