Skip to content

Commit 1ffc328

Browse files
authored
Fix semver check (#5241)
During the m134 release we were releasing firebase-sessions for the first time and due to which the semver test was broken. Hence the if conditions were added. These if conditions were not being evaluated correctly since it dependend on a malleable state of things. So now it's moved to checking in Gmaven itself if the project exists instead of depending on a malleable state which keeps being updated by the gradle tasks.
1 parent da631d2 commit 1ffc328

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

buildSrc/src/main/java/com/google/firebase/gradle/plugins/FirebaseLibraryPlugin.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ class FirebaseLibraryPlugin : BaseFirebaseLibraryPlugin() {
9191

9292
private fun getSemverTaskAar(project: Project, firebaseLibrary: FirebaseLibraryExtension) {
9393
project.mkdir("semver")
94+
project.mkdir("semver/previous-version")
9495
project.tasks.register<GmavenCopier>("copyPreviousArtifacts") {
9596
dependsOn("bundleReleaseAar")
9697
project.file("semver/previous.aar").delete()
@@ -111,7 +112,10 @@ class FirebaseLibraryPlugin : BaseFirebaseLibraryPlugin() {
111112

112113
project.tasks.register<Copy>("extractPreviousClasses") {
113114
dependsOn("copyPreviousArtifacts")
114-
if (project.file("semver/previous.aar").exists()) {
115+
if (
116+
GmavenHelper(firebaseLibrary.groupId.get(), firebaseLibrary.artifactId.get())
117+
.isPresentInGmaven()
118+
) {
115119
from(project.zipTree("semver/previous.aar"))
116120
into(project.file("semver/previous-version"))
117121
}
@@ -121,15 +125,15 @@ class FirebaseLibraryPlugin : BaseFirebaseLibraryPlugin() {
121125

122126
val previousJarFile = project.file("semver/previous-version/classes.jar").absolutePath
123127
project.tasks.register<ApiDiffer>("semverCheck") {
128+
dependsOn("extractCurrentClasses")
129+
dependsOn("extractPreviousClasses")
124130
currentJar.value(currentJarFile)
125131
previousJar.value(previousJarFile)
126132
version.value(firebaseLibrary.version)
127133
previousVersionString.value(
128134
GmavenHelper(firebaseLibrary.groupId.get(), firebaseLibrary.artifactId.get())
129135
.getLatestReleasedVersion()
130136
)
131-
dependsOn("extractCurrentClasses")
132-
dependsOn("extractPreviousClasses")
133137
}
134138
}
135139

buildSrc/src/main/java/com/google/firebase/gradle/plugins/GmavenHelper.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
package com.google.firebase.gradle.plugins
1616

1717
import java.io.FileNotFoundException
18+
import java.net.HttpURLConnection
1819
import java.net.URL
1920
import javax.xml.parsers.DocumentBuilder
2021
import javax.xml.parsers.DocumentBuilderFactory
@@ -30,6 +31,16 @@ class GmavenHelper(val groupId: String, val artifactId: String) {
3031
return "${GMAVEN_ROOT}/${groupIdAsPath}/${artifactId}/${version}/${pomFileName}"
3132
}
3233

34+
fun isPresentInGmaven(): Boolean {
35+
val groupIdAsPath = groupId.replace(".", "/")
36+
val u = URL("${GMAVEN_ROOT}/${groupIdAsPath}/${artifactId}/maven-metadata.xml")
37+
val huc: HttpURLConnection = u.openConnection() as HttpURLConnection
38+
huc.setRequestMethod("GET") // OR huc.setRequestMethod ("HEAD");
39+
huc.connect()
40+
val code: Int = huc.getResponseCode()
41+
return code == HttpURLConnection.HTTP_OK
42+
}
43+
3344
fun getArtifactForVersion(version: String, isJar: Boolean): String {
3445
val fileName =
3546
if (isJar == true) "${artifactId}-${version}.jar" else "${artifactId}-${version}.aar"

buildSrc/src/main/java/com/google/firebase/gradle/plugins/PublishingPlugin.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,6 @@ abstract class PublishingPlugin : Plugin<Project> {
450450
project.tasks.register(SEMVER_CHECK_TASK) {
451451
for (releasingProject in releasingProjects) {
452452
val semverCheckTask = releasingProject.tasks.named("semverCheck")
453-
454453
dependsOn(semverCheckTask)
455454
}
456455
}

buildSrc/src/main/java/com/google/firebase/gradle/plugins/semver/GmavenCopier.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,14 @@ abstract class GmavenCopier : DefaultTask() {
3636
@TaskAction
3737
fun run() {
3838
val mavenHelper = GmavenHelper(groupId.get(), artifactId.get())
39+
if (!mavenHelper.isPresentInGmaven()) {
40+
return
41+
}
3942
val gMavenPath =
4043
mavenHelper.getArtifactForVersion(
4144
mavenHelper.getLatestReleasedVersion(),
4245
!aarAndroidFile.get()
4346
)
44-
try {
45-
URL(gMavenPath).openStream().use { Files.copy(it, Paths.get(filePath.get())) }
46-
} catch (_: java.io.FileNotFoundException) {
47-
// Gmaven Artifact doesn't exist.
48-
return
49-
}
47+
URL(gMavenPath).openStream().use { Files.copy(it, Paths.get(filePath.get())) }
5048
}
5149
}

0 commit comments

Comments
 (0)