[Build, IGS] Add logging to InternalGradleSetupSettingsPlugin
#KTI-1223 In Progress
This commit is contained in:
committed by
Space Team
parent
2a634ead6f
commit
1e583d2946
+24
-5
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user