Merge pull request #1386 from DataDog/tyler/muzzle-add-jcenter

Add jCenter as a muzzle repository to catch things that are different from Maven Central
This commit is contained in:
Tyler Benson 2020-04-21 09:42:08 -04:00 committed by GitHub
commit 1c141d6f5c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 59 additions and 86 deletions

View File

@ -37,8 +37,15 @@ class MuzzlePlugin implements Plugin<Project> {
private static final AtomicReference<ClassLoader> TOOLING_LOADER = new AtomicReference<>() private static final AtomicReference<ClassLoader> TOOLING_LOADER = new AtomicReference<>()
static { static {
RemoteRepository central = new RemoteRepository.Builder("central", "default", "https://repo1.maven.org/maven2/").build() RemoteRepository central = new RemoteRepository.Builder("central", "default", "https://repo1.maven.org/maven2/").build()
RemoteRepository sonatype = new RemoteRepository.Builder("sonatype", "default", "https://oss.sonatype.org/content/repositories/releases/").build()
RemoteRepository jcenter = new RemoteRepository.Builder("jcenter", "default", "https://jcenter.bintray.com/").build()
RemoteRepository spring = new RemoteRepository.Builder("spring", "default", "https://repo.spring.io/libs-release/").build()
RemoteRepository jboss = new RemoteRepository.Builder("jboss", "default", "https://repository.jboss.org/nexus/content/repositories/releases/").build()
RemoteRepository typesafe = new RemoteRepository.Builder("typesafe", "default", "https://repo.typesafe.com/typesafe/releases").build() RemoteRepository typesafe = new RemoteRepository.Builder("typesafe", "default", "https://repo.typesafe.com/typesafe/releases").build()
MUZZLE_REPOS = new ArrayList<RemoteRepository>(Arrays.asList(central, typesafe)) RemoteRepository akka = new RemoteRepository.Builder("akka", "default", "https://dl.bintray.com/akka/maven/").build()
RemoteRepository atlassian = new RemoteRepository.Builder("atlassian", "default", "https://maven.atlassian.com/content/repositories/atlassian-public/").build()
// MUZZLE_REPOS = Arrays.asList(central, sonatype, jcenter, spring, jboss, typesafe, akka, atlassian)
MUZZLE_REPOS = Arrays.asList(central, jcenter, typesafe)
} }
@Override @Override
@ -205,7 +212,10 @@ class MuzzlePlugin implements Plugin<Project> {
rangeRequest.setArtifact(directiveArtifact) rangeRequest.setArtifact(directiveArtifact)
final VersionRangeResult rangeResult = system.resolveVersionRange(session, rangeRequest) final VersionRangeResult rangeResult = system.resolveVersionRange(session, rangeRequest)
final List<Artifact> allVersionArtifacts = filterVersion(rangeResult.versions).collect { version -> // println "Range Request: " + rangeRequest
// println "Range Result: " + rangeResult
final List<Artifact> allVersionArtifacts = filterVersion(rangeResult.versions, muzzleDirective.skipVersions).collect { version ->
new DefaultArtifact(muzzleDirective.group, muzzleDirective.module, "jar", version.toString()) new DefaultArtifact(muzzleDirective.group, muzzleDirective.module, "jar", version.toString())
} }
@ -236,7 +246,7 @@ class MuzzlePlugin implements Plugin<Project> {
rangeRequest.setArtifact(directiveArtifact) rangeRequest.setArtifact(directiveArtifact)
final VersionRangeResult rangeResult = system.resolveVersionRange(session, rangeRequest) final VersionRangeResult rangeResult = system.resolveVersionRange(session, rangeRequest)
filterVersion(allRangeResult.versions).collect { version -> filterVersion(allRangeResult.versions, muzzleDirective.skipVersions).collect { version ->
if (!rangeResult.versions.contains(version)) { if (!rangeResult.versions.contains(version)) {
final MuzzleDirective inverseDirective = new MuzzleDirective() final MuzzleDirective inverseDirective = new MuzzleDirective()
inverseDirective.group = muzzleDirective.group inverseDirective.group = muzzleDirective.group
@ -350,7 +360,7 @@ class MuzzlePlugin implements Plugin<Project> {
/** /**
* Filter out snapshot-type builds from versions list. * Filter out snapshot-type builds from versions list.
*/ */
private static filterVersion(List<Version> list) { private static filterVersion(List<Version> list, Set<String> skipVersions) {
list.removeIf { list.removeIf {
def version = it.toString().toLowerCase() def version = it.toString().toLowerCase()
return version.contains("rc") || return version.contains("rc") ||
@ -361,7 +371,10 @@ class MuzzlePlugin implements Plugin<Project> {
version.contains(".m") || version.contains(".m") ||
version.contains("-m") || version.contains("-m") ||
version.contains("-dev") || version.contains("-dev") ||
version.contains("-ea") ||
version.contains("-atlassian-") ||
version.contains("public_draft") || version.contains("public_draft") ||
skipVersions.contains(version) ||
version.matches(GIT_SHA_PATTERN) version.matches(GIT_SHA_PATTERN)
} }
return list return list
@ -387,6 +400,7 @@ class MuzzleDirective {
String group String group
String module String module
String versions String versions
Set<String> skipVersions = new HashSet<>()
List<String> additionalDependencies = new ArrayList<>() List<String> additionalDependencies = new ArrayList<>()
boolean assertPass boolean assertPass
boolean assertInverse = false boolean assertInverse = false
@ -442,6 +456,7 @@ class MuzzleExtension {
void pass(Action<? super MuzzleDirective> action) { void pass(Action<? super MuzzleDirective> action) {
final MuzzleDirective pass = objectFactory.newInstance(MuzzleDirective) final MuzzleDirective pass = objectFactory.newInstance(MuzzleDirective)
action.execute(pass) action.execute(pass)
postConstruct(pass)
pass.assertPass = true pass.assertPass = true
directives.add(pass) directives.add(pass)
} }
@ -449,7 +464,15 @@ class MuzzleExtension {
void fail(Action<? super MuzzleDirective> action) { void fail(Action<? super MuzzleDirective> action) {
final MuzzleDirective fail = objectFactory.newInstance(MuzzleDirective) final MuzzleDirective fail = objectFactory.newInstance(MuzzleDirective)
action.execute(fail) action.execute(fail)
postConstruct(fail)
fail.assertPass = false fail.assertPass = false
directives.add(fail) directives.add(fail)
} }
private postConstruct(MuzzleDirective directive) {
// Make skipVersions case insensitive.
directive.skipVersions = directive.skipVersions.collect {
it.toLowerCase()
}
}
} }

View File

@ -3,6 +3,7 @@ muzzle {
group = "commons-httpclient" group = "commons-httpclient"
module = "commons-httpclient" module = "commons-httpclient"
versions = "[,4.0)" versions = "[,4.0)"
skipVersions += '3.1-jenkins-1'
} }
pass { pass {
group = "org.apache.httpcomponents" group = "org.apache.httpcomponents"

View File

@ -3,6 +3,7 @@ muzzle {
group = "commons-httpclient" group = "commons-httpclient"
module = "commons-httpclient" module = "commons-httpclient"
versions = "[2.0,]" versions = "[2.0,]"
skipVersions += "3.1-jenkins-1" // odd version in jcenter
assertInverse = true assertInverse = true
} }
} }

View File

@ -45,9 +45,8 @@ dependencies {
testCompile group: 'org.elasticsearch.plugin', name: 'transport-netty4-client', version: '6.4.0' testCompile group: 'org.elasticsearch.plugin', name: 'transport-netty4-client', version: '6.4.0'
// TODO: The tests are incompatible with 7.x. The instrumentation may be as well. // TODO: The tests are incompatible with 7.x. The instrumentation may be as well.
// FIXME: Lock to specific version due to bad deploy rollout. latestDepTestCompile group: 'org.elasticsearch.client', name: 'elasticsearch-rest-client', version: '6.+'
latestDepTestCompile group: 'org.elasticsearch.client', name: 'elasticsearch-rest-client', version: '6.8.3' latestDepTestCompile group: 'org.elasticsearch.client', name: 'transport', version: '6.+'
latestDepTestCompile group: 'org.elasticsearch.client', name: 'transport', version: '6.8.3' latestDepTestCompile group: 'org.elasticsearch', name: 'elasticsearch', version: '6.+'
latestDepTestCompile group: 'org.elasticsearch', name: 'elasticsearch', version: '6.8.3' latestDepTestCompile group: 'org.elasticsearch.plugin', name: 'transport-netty4-client', version: '6.+'
latestDepTestCompile group: 'org.elasticsearch.plugin', name: 'transport-netty4-client', version: '6.8.3'
} }

View File

@ -8,8 +8,7 @@ muzzle {
group = "org.elasticsearch.client" group = "org.elasticsearch.client"
module = "transport" module = "transport"
versions = "[5.3.0,6.0.0)" versions = "[5.3.0,6.0.0)"
// Work around for a bad release of 6.8.4 assertInverse = true
// assertInverse = true
} }
pass { pass {
group = "org.elasticsearch" group = "org.elasticsearch"

View File

@ -8,8 +8,7 @@ muzzle {
group = "org.elasticsearch.client" group = "org.elasticsearch.client"
module = "transport" module = "transport"
versions = "[5.0.0,5.3.0)" versions = "[5.0.0,5.3.0)"
// Work around for a bad release of 6.8.4 assertInverse = true
// assertInverse = true
} }
pass { pass {
group = "org.elasticsearch" group = "org.elasticsearch"

View File

@ -7,14 +7,13 @@ muzzle {
pass { pass {
group = "org.elasticsearch.client" group = "org.elasticsearch.client"
module = "transport" module = "transport"
versions = "[6.0.0,6.8.4)" versions = "[6.0.0,]"
// Work around for a bad release of 6.8.4 assertInverse = true
// assertInverse = true
} }
pass { pass {
group = "org.elasticsearch" group = "org.elasticsearch"
module = "elasticsearch" module = "elasticsearch"
versions = "[6.0.0,)" versions = "[6.0.0,]"
assertInverse = true assertInverse = true
} }
} }

View File

@ -2,7 +2,9 @@ muzzle {
pass { pass {
group = "com.sun.jersey" group = "com.sun.jersey"
module = "jersey-client" module = "jersey-client"
versions = "[,]" versions = "[1.1,]"
skipVersions += ['1.0.3-atlassian-1-logpatch', '1.8-atlassian-6']
assertInverse = true
} }
} }

View File

@ -14,45 +14,27 @@ testSets {
} }
muzzle { muzzle {
// 2.0.5 was a bad release
fail { fail {
group = 'com.typesafe.play' group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.11' module = 'play-ahc-ws-standalone_2.11'
versions = '[,2.0.4]' versions = '[,]'
}
fail {
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.11'
versions = '[2.0.6,)'
} }
fail {
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.12'
versions = '[,2.0.4]'
}
fail {
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.12'
versions = '[2.0.6,2.1.0)'
}
pass { pass {
group = 'com.typesafe.play' group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.12' module = 'play-ahc-ws-standalone_2.12'
versions = '[2.1.0,]' versions = '[2.1.0,]'
skipVersions += '2.0.5' // Bad release
assertInverse = true
} }
// No Scala 2.13 versions below 2.0.6 exist
fail {
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.13'
versions = '[2.0.6,2.1.0)'
}
pass { pass {
group = 'com.typesafe.play' group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.13' module = 'play-ahc-ws-standalone_2.13'
versions = '[2.1.0,]' versions = '[2.1.0,]'
skipVersions += '2.0.5' // Bad release
assertInverse = true
} }
} }

View File

@ -14,38 +14,20 @@ testSets {
} }
muzzle { muzzle {
// 2.0.5 was a bad release
fail {
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.11'
versions = '[,2.0.0)'
}
pass { pass {
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.11' module = 'play-ahc-ws-standalone_2.11'
versions = '[2.0.0,2.0.4]'
}
pass {
group = 'com.typesafe.play' group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.11' versions = '[2.0.0,]'
versions = '[2.0.6,]' assertInverse = true
} }
fail {
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.12'
versions = '[,2.0.0)'
}
pass { pass {
group = 'com.typesafe.play' group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.12' module = 'play-ahc-ws-standalone_2.12'
versions = '[2.0.0,2.0.4]' versions = '[2.0.0,2.1.0)'
} skipVersions += '2.0.5' // Bad release
pass { assertInverse = true
group = 'com.typesafe.play'
module = 'play-ahc-ws-standalone_2.12'
versions = '[2.0.6,2.1.0)'
} }
// No Scala 2.13 versions below 2.0.6 exist // No Scala 2.13 versions below 2.0.6 exist

View File

@ -9,6 +9,8 @@ muzzle {
group = "javax.servlet" group = "javax.servlet"
module = 'servlet-api' module = 'servlet-api'
versions = "[,]" versions = "[,]"
skipVersions += '0'
assertInverse = true
} }
} }

View File

@ -1,36 +1,20 @@
muzzle { muzzle {
fail {
group = 'org.springframework'
module = 'spring-webmvc'
versions = "[,1.2.1)"
extraDependency "javax.servlet:javax.servlet-api:3.0.1"
}
// 1.2.1-1.2.4 have broken dependencies.
fail {
group = 'org.springframework'
module = 'spring-webmvc'
versions = "(1.2.4,3.1.0.RELEASE)"
extraDependency "javax.servlet:javax.servlet-api:3.0.1"
}
pass { pass {
group = 'org.springframework' group = 'org.springframework'
module = 'spring-webmvc' module = 'spring-webmvc'
versions = "[3.1.0.RELEASE,3.2.1.RELEASE)" versions = "[3.1.0.RELEASE,]"
extraDependency "javax.servlet:javax.servlet-api:3.0.1" skipVersions += ['1.2.1', '1.2.2', '1.2.3', '1.2.4'] // broken releases... missing dependencies
} skipVersions += '3.2.1.RELEASE' // missing a required class. (bad release?)
// 3.2.1.RELEASE is missing a required class. (bad release?)
pass {
group = 'org.springframework'
module = 'spring-webmvc'
versions = "(3.2.1.RELEASE,]"
extraDependency "javax.servlet:javax.servlet-api:3.0.1" extraDependency "javax.servlet:javax.servlet-api:3.0.1"
assertInverse = true
} }
// FIXME: webmvc depends on web, so we need a separate integration for spring-web specifically. // FIXME: webmvc depends on web, so we need a separate integration for spring-web specifically.
fail { fail {
group = 'org.springframework' group = 'org.springframework'
module = 'spring-web' module = 'spring-web'
versions = "(1.2.4,]" versions = "[,]"
skipVersions += ['1.2.1', '1.2.2', '1.2.3', '1.2.4'] // broken releases... missing dependencies
extraDependency "javax.servlet:javax.servlet-api:3.0.1" extraDependency "javax.servlet:javax.servlet-api:3.0.1"
} }
} }