Add build report usage to FUS
#KT-62264 Fixed
This commit is contained in:
committed by
Space Team
parent
44d48510b4
commit
e66f41da95
+3
-2
@@ -64,7 +64,8 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
|
||||
}
|
||||
|
||||
val fusStatisticsAvailable = fusStatisticsAvailable(project)
|
||||
val buildScanReportEnabled = reportingSettings(project).buildReportOutputs.contains(BuildReportType.BUILD_SCAN)
|
||||
val buildReportOutputs = reportingSettings(project).buildReportOutputs
|
||||
val buildScanReportEnabled = buildReportOutputs.contains(BuildReportType.BUILD_SCAN)
|
||||
|
||||
//Workaround for known issues for Gradle 8+: https://github.com/gradle/gradle/issues/24887:
|
||||
// when this OperationCompletionListener is called services can be already closed for Gradle 8,
|
||||
@@ -78,7 +79,7 @@ internal abstract class BuildFlowService : BuildService<BuildFlowService.Paramet
|
||||
}
|
||||
|
||||
spec.parameters.configurationMetrics.set(project.provider {
|
||||
KotlinBuildStatsService.getInstance()?.collectStartMetrics(project, isProjectIsolationEnabled)
|
||||
KotlinBuildStatsService.getInstance()?.collectStartMetrics(project, isProjectIsolationEnabled, buildReportOutputs)
|
||||
})
|
||||
spec.parameters.fusStatisticsAvailable.set(fusStatisticsAvailable)
|
||||
}.also { buildService ->
|
||||
|
||||
+11
@@ -9,6 +9,7 @@ import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.DependencySet
|
||||
import org.gradle.api.logging.Logging
|
||||
import org.jetbrains.kotlin.gradle.plugin.statistics.plugins.ObservablePlugins
|
||||
import org.jetbrains.kotlin.gradle.report.BuildReportType
|
||||
import org.jetbrains.kotlin.gradle.utils.*
|
||||
import org.jetbrains.kotlin.statistics.BuildSessionLogger
|
||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
||||
@@ -84,11 +85,21 @@ class KotlinBuildStatHandler {
|
||||
project: Project,
|
||||
sessionLogger: BuildSessionLogger,
|
||||
isProjectIsolationEnabled: Boolean,
|
||||
buildReportOutputs: List<BuildReportType>,
|
||||
): MetricContainer {
|
||||
val gradle = project.gradle
|
||||
val configurationTimeMetrics = MetricContainer()
|
||||
configurationTimeMetrics.put(StringMetrics.PROJECT_PATH, gradle.rootProject.projectDir.absolutePath)
|
||||
configurationTimeMetrics.put(StringMetrics.GRADLE_VERSION, gradle.gradleVersion)
|
||||
buildReportOutputs.forEach {
|
||||
when (it) {
|
||||
BuildReportType.BUILD_SCAN -> configurationTimeMetrics.put(BooleanMetrics.BUILD_SCAN_BUILD_REPORT, true)
|
||||
BuildReportType.FILE -> configurationTimeMetrics.put(BooleanMetrics.FILE_BUILD_REPORT, true)
|
||||
BuildReportType.HTTP -> configurationTimeMetrics.put(BooleanMetrics.HTTP_BUILD_REPORT, true)
|
||||
BuildReportType.SINGLE_FILE -> configurationTimeMetrics.put(BooleanMetrics.SINGLE_FILE_BUILD_REPORT, true)
|
||||
BuildReportType.TRY_K2_CONSOLE -> {}//ignore
|
||||
}
|
||||
}
|
||||
|
||||
if (isProjectIsolationEnabled) { //support project isolation - KT-58768
|
||||
return configurationTimeMetrics
|
||||
|
||||
+4
-3
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.gradle.plugin.internal.ConfigurationTimePropertiesAc
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.configurationTimePropertiesAccessor
|
||||
import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime
|
||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatHandler.Companion.runSafe
|
||||
import org.jetbrains.kotlin.gradle.report.BuildReportType
|
||||
import org.jetbrains.kotlin.statistics.BuildSessionLogger
|
||||
import org.jetbrains.kotlin.statistics.BuildSessionLogger.Companion.STATISTICS_FOLDER_NAME
|
||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
||||
@@ -195,7 +196,7 @@ internal abstract class KotlinBuildStatsService internal constructor() : IStatis
|
||||
/**
|
||||
* Collect project general and configuration metrics at the start of a build
|
||||
*/
|
||||
open fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean): MetricContainer = MetricContainer()
|
||||
open fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean, buildReportOutputs: List<BuildReportType>): MetricContainer = MetricContainer()
|
||||
|
||||
open fun recordProjectsEvaluated(gradle: Gradle) {}
|
||||
}
|
||||
@@ -312,7 +313,7 @@ internal class DefaultKotlinBuildStatsService internal constructor(
|
||||
KotlinBuildStatHandler().reportBuildFinished(sessionLogger, action, buildFailed, configurationTimeMetrics)
|
||||
}
|
||||
|
||||
override fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean) =
|
||||
KotlinBuildStatHandler().collectConfigurationTimeMetrics(project, sessionLogger, isProjectIsolationEnabled)
|
||||
override fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean, buildReportOutputs: List<BuildReportType>) =
|
||||
KotlinBuildStatHandler().collectConfigurationTimeMetrics(project, sessionLogger, isProjectIsolationEnabled, buildReportOutputs)
|
||||
|
||||
}
|
||||
|
||||
+6
@@ -48,6 +48,12 @@ enum class BooleanMetrics(val type: BooleanOverridePolicy, val anonymization: Bo
|
||||
JS_KLIB_INCREMENTAL(OR, SAFE),
|
||||
JS_IR_INCREMENTAL(OR, SAFE),
|
||||
|
||||
//Build reports
|
||||
FILE_BUILD_REPORT(OR, SAFE),
|
||||
BUILD_SCAN_BUILD_REPORT(OR, SAFE),
|
||||
HTTP_BUILD_REPORT(OR, SAFE),
|
||||
SINGLE_FILE_BUILD_REPORT(OR, SAFE),
|
||||
|
||||
//Dokka features
|
||||
ENABLED_DOKKA(OR, SAFE),
|
||||
ENABLED_DOKKA_HTML(OR, SAFE),
|
||||
|
||||
Reference in New Issue
Block a user