mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
build scripts: failing-fast upon a failure reported during a local execution
IJI-1455 (cherry picked from commit 24db0490b9a6fc5d8dfabfd31580449e7cd64acf) GitOrigin-RevId: 8a0cfe2c3c8b7aee86f2275db3408f92cfef1219
This commit is contained in:
committed by
intellij-monorepo-bot
parent
58072bd39b
commit
8b8c09642f
@@ -2,6 +2,7 @@
|
|||||||
package org.jetbrains.intellij.build.logging
|
package org.jetbrains.intellij.build.logging
|
||||||
|
|
||||||
import org.jetbrains.annotations.ApiStatus
|
import org.jetbrains.annotations.ApiStatus
|
||||||
|
import org.jetbrains.intellij.build.BuildScriptsLoggedError
|
||||||
|
|
||||||
abstract class BuildMessageLogger {
|
abstract class BuildMessageLogger {
|
||||||
abstract fun processMessage(message: LogMessage)
|
abstract fun processMessage(message: LogMessage)
|
||||||
@@ -35,9 +36,18 @@ class ConsoleBuildMessageLogger : BuildMessageLoggerBase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun processMessage(message: LogMessage) {
|
override fun processMessage(message: LogMessage) {
|
||||||
// reported by trace exporter
|
when (message.kind) {
|
||||||
if (message.kind != LogMessage.Kind.BLOCK_STARTED && message.kind != LogMessage.Kind.BLOCK_FINISHED) {
|
// reported by trace exporter
|
||||||
super.processMessage(message)
|
LogMessage.Kind.BLOCK_STARTED, LogMessage.Kind.BLOCK_FINISHED -> {}
|
||||||
|
// failing-fast upon a build problem
|
||||||
|
LogMessage.Kind.BUILD_PROBLEM -> throw BuildScriptsLoggedError(message.text)
|
||||||
|
LogMessage.Kind.COMPILATION_ERRORS -> {
|
||||||
|
check(message is CompilationErrorsLogMessage) {
|
||||||
|
"Unexpected compilation errors message type: ${message::class.java.canonicalName}"
|
||||||
|
}
|
||||||
|
throw BuildScriptsLoggedError(message.errorMessages.joinToString(prefix = "${message.text}:\n", separator = "\n"))
|
||||||
|
}
|
||||||
|
else -> super.processMessage(message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import kotlinx.collections.immutable.PersistentMap
|
|||||||
import kotlinx.collections.immutable.persistentMapOf
|
import kotlinx.collections.immutable.persistentMapOf
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import org.jetbrains.intellij.build.dependencies.TeamCityHelper
|
|
||||||
import org.jetbrains.intellij.build.io.DEFAULT_TIMEOUT
|
import org.jetbrains.intellij.build.io.DEFAULT_TIMEOUT
|
||||||
import org.jetbrains.intellij.build.productRunner.IntellijProductRunner
|
import org.jetbrains.intellij.build.productRunner.IntellijProductRunner
|
||||||
import org.jetbrains.intellij.build.telemetry.use
|
import org.jetbrains.intellij.build.telemetry.use
|
||||||
@@ -185,14 +184,9 @@ suspend inline fun <T> BuildContext.executeStep(
|
|||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
catch (e: Throwable) {
|
catch (e: Throwable) {
|
||||||
if (TeamCityHelper.isUnderTeamCity) {
|
span.recordException(e)
|
||||||
span.recordException(e)
|
options.buildStepListener.onFailure(stepId = stepId, failure = e, messages = messages)
|
||||||
options.buildStepListener.onFailure(stepId = stepId, failure = e, messages = messages)
|
null
|
||||||
null
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
throw e
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
options.buildStepListener.onCompletion(stepId, messages)
|
options.buildStepListener.onCompletion(stepId, messages)
|
||||||
|
|||||||
@@ -187,6 +187,9 @@ private class DebugLogger {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used unconditionally by both [TeamCityBuildMessageLogger] and [ConsoleBuildMessageLogger]
|
||||||
|
*/
|
||||||
private class PrintWriterBuildMessageLogger(
|
private class PrintWriterBuildMessageLogger(
|
||||||
private val output: StringBuilder,
|
private val output: StringBuilder,
|
||||||
private val disposer: Consumer<PrintWriterBuildMessageLogger>,
|
private val disposer: Consumer<PrintWriterBuildMessageLogger>,
|
||||||
|
|||||||
Reference in New Issue
Block a user