project/PekkoDevelocityPlugin.scala (53 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import com.gradle.develocity.agent.sbt.DevelocityPlugin
import com.gradle.develocity.agent.sbt.DevelocityPlugin.autoImport.{
develocityConfiguration,
FlakyTestPolicy,
ProjectId,
Publishing
}
import sbt.{ inConfig, url, AutoPlugin, Def, PluginTrigger, Plugins, Setting }
import sbt.Keys.insideCI
object PekkoDevelocityPlugin extends AutoPlugin {
private val ApacheDevelocityUrl = url("https://develocity.apache.org")
private val PekkoProjectId = ProjectId("pekko")
private val ObfuscatedIPv4Address = "0.0.0.0"
override lazy val trigger: PluginTrigger = allRequirements
override lazy val requires: Plugins = DevelocityPlugin
override lazy val buildSettings: Seq[Setting[_]] = Def.settings(
develocityConfiguration := {
val isInsideCI = insideCI.value
val original = develocityConfiguration.value
val apacheDevelocityConfiguration =
original
.withProjectId(PekkoProjectId)
.withServer(
original.server
.withUrl(Some(ApacheDevelocityUrl))
.withAllowUntrusted(false))
.withBuildScan(
original.buildScan
.withPublishing(Publishing.onlyIf(_.authenticated))
.withBackgroundUpload(!isInsideCI)
.withObfuscation(
original.buildScan.obfuscation
.withIpAddresses(_.map(_ => ObfuscatedIPv4Address))))
.withBuildCache(
original.buildCache
.withLocal(
original.buildCache.local
.withEnabled(false)))
if (isInsideCI) {
apacheDevelocityConfiguration
.withTestRetryConfiguration(
original.testRetryConfiguration
.withMaxRetries(1)
.withFlakyTestPolicy(FlakyTestPolicy.Fail) // preserve the original build outcome in case of flaky tests
)
} else apacheDevelocityConfiguration
})
}
/**
* An AutoPlugin to add Develocity test configuration to the TestJdk9 configuration.
*/
object PekkoDevelocityJdk9TestSettingsPlugin extends AutoPlugin {
override lazy val trigger: PluginTrigger = allRequirements
override lazy val requires: Plugins = DevelocityPlugin && Jdk9
// See https://docs.gradle.com/develocity/sbt-plugin/#enabling_build_cache_in_a_custom_sbt_configuration
override lazy val projectSettings = DevelocityPlugin.develocitySettings(Jdk9.TestJdk9)
}