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 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:
|
//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,
|
// 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 {
|
spec.parameters.configurationMetrics.set(project.provider {
|
||||||
KotlinBuildStatsService.getInstance()?.collectStartMetrics(project, isProjectIsolationEnabled)
|
KotlinBuildStatsService.getInstance()?.collectStartMetrics(project, isProjectIsolationEnabled, buildReportOutputs)
|
||||||
})
|
})
|
||||||
spec.parameters.fusStatisticsAvailable.set(fusStatisticsAvailable)
|
spec.parameters.fusStatisticsAvailable.set(fusStatisticsAvailable)
|
||||||
}.also { buildService ->
|
}.also { buildService ->
|
||||||
|
|||||||
+11
@@ -9,6 +9,7 @@ import org.gradle.api.Project
|
|||||||
import org.gradle.api.artifacts.DependencySet
|
import org.gradle.api.artifacts.DependencySet
|
||||||
import org.gradle.api.logging.Logging
|
import org.gradle.api.logging.Logging
|
||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.plugins.ObservablePlugins
|
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.gradle.utils.*
|
||||||
import org.jetbrains.kotlin.statistics.BuildSessionLogger
|
import org.jetbrains.kotlin.statistics.BuildSessionLogger
|
||||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
||||||
@@ -84,11 +85,21 @@ class KotlinBuildStatHandler {
|
|||||||
project: Project,
|
project: Project,
|
||||||
sessionLogger: BuildSessionLogger,
|
sessionLogger: BuildSessionLogger,
|
||||||
isProjectIsolationEnabled: Boolean,
|
isProjectIsolationEnabled: Boolean,
|
||||||
|
buildReportOutputs: List<BuildReportType>,
|
||||||
): MetricContainer {
|
): MetricContainer {
|
||||||
val gradle = project.gradle
|
val gradle = project.gradle
|
||||||
val configurationTimeMetrics = MetricContainer()
|
val configurationTimeMetrics = MetricContainer()
|
||||||
configurationTimeMetrics.put(StringMetrics.PROJECT_PATH, gradle.rootProject.projectDir.absolutePath)
|
configurationTimeMetrics.put(StringMetrics.PROJECT_PATH, gradle.rootProject.projectDir.absolutePath)
|
||||||
configurationTimeMetrics.put(StringMetrics.GRADLE_VERSION, gradle.gradleVersion)
|
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
|
if (isProjectIsolationEnabled) { //support project isolation - KT-58768
|
||||||
return configurationTimeMetrics
|
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.configurationTimePropertiesAccessor
|
||||||
import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime
|
import org.jetbrains.kotlin.gradle.plugin.internal.usedAtConfigurationTime
|
||||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatHandler.Companion.runSafe
|
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
|
||||||
import org.jetbrains.kotlin.statistics.BuildSessionLogger.Companion.STATISTICS_FOLDER_NAME
|
import org.jetbrains.kotlin.statistics.BuildSessionLogger.Companion.STATISTICS_FOLDER_NAME
|
||||||
import org.jetbrains.kotlin.statistics.metrics.BooleanMetrics
|
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
|
* 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) {}
|
open fun recordProjectsEvaluated(gradle: Gradle) {}
|
||||||
}
|
}
|
||||||
@@ -312,7 +313,7 @@ internal class DefaultKotlinBuildStatsService internal constructor(
|
|||||||
KotlinBuildStatHandler().reportBuildFinished(sessionLogger, action, buildFailed, configurationTimeMetrics)
|
KotlinBuildStatHandler().reportBuildFinished(sessionLogger, action, buildFailed, configurationTimeMetrics)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean) =
|
override fun collectStartMetrics(project: Project, isProjectIsolationEnabled: Boolean, buildReportOutputs: List<BuildReportType>) =
|
||||||
KotlinBuildStatHandler().collectConfigurationTimeMetrics(project, sessionLogger, isProjectIsolationEnabled)
|
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_KLIB_INCREMENTAL(OR, SAFE),
|
||||||
JS_IR_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
|
//Dokka features
|
||||||
ENABLED_DOKKA(OR, SAFE),
|
ENABLED_DOKKA(OR, SAFE),
|
||||||
ENABLED_DOKKA_HTML(OR, SAFE),
|
ENABLED_DOKKA_HTML(OR, SAFE),
|
||||||
|
|||||||
Reference in New Issue
Block a user