[Build, IGS] Add logging to InternalGradleSetupSettingsPlugin

#KTI-1223 In Progress
This commit is contained in:
Alexander.Likhachev
2023-05-10 20:19:15 +02:00
committed by Space Team
parent 2a634ead6f
commit 1e583d2946
@@ -7,18 +7,26 @@ package org.jetbrains.kotlin.build
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.initialization.Settings import org.gradle.api.initialization.Settings
import org.gradle.api.logging.Logging
import org.gradle.api.plugins.ExtensionAware import org.gradle.api.plugins.ExtensionAware
import org.gradle.kotlin.dsl.extra import org.gradle.kotlin.dsl.extra
import java.net.SocketTimeoutException
import java.net.URL import java.net.URL
import java.net.UnknownHostException
import kotlin.concurrent.thread import kotlin.concurrent.thread
private const val DOMAIN_NAME = "kotlin-build-properties.labs.jb.gg" private const val DOMAIN_NAME = "kotlin-build-properties.labs.jb.gg"
private const val SETUP_JSON_URL = "https://$DOMAIN_NAME/setup.json" private const val SETUP_JSON_URL = "https://$DOMAIN_NAME/setup.json"
abstract class InternalGradleSetupSettingsPlugin : Plugin<Settings> { abstract class InternalGradleSetupSettingsPlugin : Plugin<Settings> {
private val log = Logging.getLogger(javaClass)
override fun apply(target: Settings) { override fun apply(target: Settings) {
val isTeamCityBuild = (target as? ExtensionAware)?.extra?.has("teamcity") == true || System.getenv("TEAMCITY_VERSION") != null val isTeamCityBuild = (target as? ExtensionAware)?.extra?.has("teamcity") == true || System.getenv("TEAMCITY_VERSION") != null
if (isTeamCityBuild) return if (isTeamCityBuild) {
log.info("TeamCity build detected. Skipping automatic local.properties configuration")
return
}
val rootDir = target.rootDir val rootDir = target.rootDir
// invoke this logic in a separate thread to not pause the build // invoke this logic in a separate thread to not pause the build
// the properties will be configured for the future builds // the properties will be configured for the future builds
@@ -27,15 +35,26 @@ abstract class InternalGradleSetupSettingsPlugin : Plugin<Settings> {
val modifier = LocalPropertiesModifier(rootDir.resolve("local.properties")) val modifier = LocalPropertiesModifier(rootDir.resolve("local.properties"))
val consentManager = ConsentManager(modifier) val consentManager = ConsentManager(modifier)
val initialDecision = consentManager.getUserDecision() val initialDecision = consentManager.getUserDecision()
if (initialDecision == false) return@thread // user has opted out if (initialDecision == false) {
log.debug("Skipping automatic local.properties configuration as you've opted out")
return@thread
}
val connection = URL(SETUP_JSON_URL).run { openConnection().apply { connectTimeout = 300 } } val connection = URL(SETUP_JSON_URL).run { openConnection().apply { connectTimeout = 300 } }
val setupFile = connection.getInputStream().buffered().use { val setupFile = connection.getInputStream().buffered().use {
parseSetupFile(it) parseSetupFile(it)
} }
if (initialDecision == null && !consentManager.askForConsent()) return@thread if (initialDecision == null && !consentManager.askForConsent()) {
log.debug("Skipping automatic local.properties configuration as the consent wasn't given")
return@thread
}
modifier.applySetup(setupFile) modifier.applySetup(setupFile)
} catch (_: Throwable) { log.info("Automatic local.properties setup has been applied.")
// no-op } catch (e: UnknownHostException) {
log.debug("Cannot connect to the internal properties storage", e)
} catch (e: SocketTimeoutException) {
log.debug("Cannot connect to the internal properties storage", e)
} catch (e: Throwable) {
log.warn("Something went wrong during the automatic local.properties setup attempt", e)
} }
} }
} }