Add build uuid, time and hostname fields to ES stat

This commit is contained in:
nataliya.valtman
2021-08-17 10:48:49 +03:00
parent ae3f0a5158
commit 7038b02933
4 changed files with 14 additions and 5 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.gradle.plugin.statistics.ReportStatisticsToBuildScan
import org.jetbrains.kotlin.gradle.plugin.statistics.ReportStatisticsToElasticSearch
import org.jetbrains.kotlin.gradle.report.configureReporting
import org.jetbrains.kotlin.gradle.utils.isConfigurationCacheAvailable
import java.util.*
//Support Gradle 6 and less. Move to
internal class KotlinGradleBuildServices private constructor(
@@ -78,8 +79,8 @@ internal class KotlinGradleBuildServices private constructor(
val listeners = project.rootProject.objects.listProperty(ReportStatistics::class.java)
.value(listOf<ReportStatistics>(ReportStatisticsToElasticSearch))
project.rootProject.extensions.findByName("buildScan")
?.also { listeners.add(ReportStatisticsToBuildScan(it as BuildScanExtension)) }
KotlinBuildEsStatListener(project.rootProject.name, listeners.get())
?.also { listeners.add(ReportStatisticsToBuildScan(it as BuildScanExtension, UUID.randomUUID().toString(), "kotlin_version")) }
KotlinBuildEsStatListener(project.rootProject.name, listeners.get(), UUID.randomUUID().toString())
}
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.gradle.plugin.internal.state.TaskExecutionResults
import org.jetbrains.kotlin.gradle.plugin.stat.CompileStatData
import org.jetbrains.kotlin.gradle.plugin.stat.ReportStatistics
import org.jetbrains.kotlin.incremental.ChangedFiles
import java.net.InetAddress
enum class TaskExecutionState {
SKIPPED,
@@ -27,9 +28,11 @@ enum class TaskExecutionState {
;
}
class KotlinBuildEsStatListener(val projectName: String, val reportStatistics: List<ReportStatistics>) : OperationCompletionListener, AutoCloseable, TaskExecutionListener {
class KotlinBuildEsStatListener(val projectName: String, val reportStatistics: List<ReportStatistics>, val buildUuid: String) :
OperationCompletionListener, AutoCloseable, TaskExecutionListener {
val label by lazy { CompilerSystemProperties.KOTLIN_STAT_LABEl_PROPERTY.value }
val hostName by lazy { InetAddress.getLocalHost().hostName }
override fun onFinish(event: FinishEvent?) {
if (event is TaskFinishEvent) {
@@ -68,7 +71,8 @@ class KotlinBuildEsStatListener(val projectName: String, val reportStatistics: L
duration = duration, taskResult = taskResult.name, label = label,
statData = statData, projectName = projectName, taskName = taskPath, changes = changes,
tags = taskExecutionResult?.taskInfo?.properties?.map { it.name } ?: emptyList(),
nonIncrementalAttributes = taskExecutionResult?.buildMetrics?.buildAttributes?.asMap()?: emptyMap()
nonIncrementalAttributes = taskExecutionResult?.buildMetrics?.buildAttributes?.asMap() ?: emptyMap(),
hostName = hostName, kotlinVersion = "1.6", buildUuid = buildUuid, timeInMillis = System.currentTimeMillis()
)
reportStatistics.forEach { it.report(compileStatData) }
}
@@ -17,6 +17,10 @@ data class CompileStatData(
val duration: Long,
val tags: List<String>,
val changes: List<String>,
val buildUuid: String = "Unset",
val kotlinVersion: String = "0.0.0",
val hostName: String = "Unset",
val timeInMillis: Long,
val nonIncrementalAttributes: Map<BuildAttribute, Int>,
val statData: Map<BuildTime, Long>
)
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.gradle.plugin.stat.CompileStatData
import org.jetbrains.kotlin.gradle.plugin.stat.ReportStatistics
import org.jetbrains.kotlin.konan.file.File
class ReportStatisticsToBuildScan(private val buildScan: BuildScanExtension) : ReportStatistics {
class ReportStatisticsToBuildScan(private val buildScan: BuildScanExtension, private val buildUuid: String, private val kotlinVersion: String) : ReportStatistics {
override fun report(data: CompileStatData) {
buildScan.value(data.taskName, readableString(data))
data.tags.forEach { buildScan.tag(it) }