From 08cb7efa2a840bc4db3074d11bbbb23da15642ee Mon Sep 17 00:00:00 2001 From: Emily Ploszaj Date: Wed, 16 Jul 2025 16:44:25 -0500 Subject: [PATCH 1/2] Resolve metalava semver using outdated version info --- .github/workflows/metalava-semver-check.yml | 8 +++++--- .../gradle/plugins/FirebaseAndroidLibraryPlugin.kt | 6 +++--- .../firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/metalava-semver-check.yml b/.github/workflows/metalava-semver-check.yml index 7cedffbb094..6fb02c0c86d 100644 --- a/.github/workflows/metalava-semver-check.yml +++ b/.github/workflows/metalava-semver-check.yml @@ -11,8 +11,10 @@ jobs: permissions: pull-requests: write steps: - - name: Checkout PR + - name: Checkout main uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: ${{ github.base_ref }} - name: Set up JDK 17 uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 @@ -24,10 +26,10 @@ jobs: - name: Copy new api.txt files run: ./gradlew copyApiTxtFile - - name: Checkout main + - name: Checkout PR uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: - ref: ${{ github.base_ref }} + ref: ${{ github.head_ref || github.ref_name }} clean: false - name: Run Metalava SemVer check diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt index 8f4563e3107..c9266f4ae0a 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt @@ -163,12 +163,12 @@ class FirebaseAndroidLibraryPlugin : BaseFirebaseLibraryPlugin() { project.tasks.register("copyApiTxtFile") { apiTxtFile.set(project.file("api.txt")) - output.set(project.file("new_api.txt")) + output.set(project.file("old_api.txt")) } project.tasks.register("metalavaSemver") { - apiTxtFile.set(project.file("new_api.txt")) - otherApiFile.set(project.file("api.txt")) + apiTxtFile.set(project.file("api.txt")) + otherApiFile.set(project.file("old_api.txt")) currentVersionString.value(firebaseLibrary.version) previousVersionString.value(firebaseLibrary.previousVersion) } diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt index 11e89ad1a8c..b3a8b1251cd 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt @@ -106,12 +106,12 @@ class FirebaseJavaLibraryPlugin : BaseFirebaseLibraryPlugin() { project.tasks.register("copyApiTxtFile") { apiTxtFile.set(project.file("api.txt")) - output.set(project.file("new_api.txt")) + output.set(project.file("old_api.txt")) } project.tasks.register("metalavaSemver") { - apiTxtFile.set(project.file("new_api.txt")) - otherApiFile.set(project.file("api.txt")) + apiTxtFile.set(project.file("api.txt")) + otherApiFile.set(project.file("old_api.txt")) currentVersionString.value(firebaseLibrary.version) previousVersionString.value(firebaseLibrary.previousVersion) } From 7930f39d9bbbf1e26bbd8227c07038ba98bac337 Mon Sep 17 00:00:00 2001 From: Emily Ploszaj Date: Mon, 21 Jul 2025 11:48:34 -0500 Subject: [PATCH 2/2] Resolve comments --- .github/workflows/metalava-semver-check.yml | 2 +- .../gradle/plugins/BaseFirebaseLibraryPlugin.kt | 14 ++++++++++++++ .../gradle/plugins/FirebaseAndroidLibraryPlugin.kt | 12 +----------- .../gradle/plugins/FirebaseJavaLibraryPlugin.kt | 12 +----------- .../google/firebase/gradle/plugins/SemVerTask.kt | 4 ++-- 5 files changed, 19 insertions(+), 25 deletions(-) diff --git a/.github/workflows/metalava-semver-check.yml b/.github/workflows/metalava-semver-check.yml index 6fb02c0c86d..04a3e7ef57c 100644 --- a/.github/workflows/metalava-semver-check.yml +++ b/.github/workflows/metalava-semver-check.yml @@ -23,7 +23,7 @@ jobs: distribution: temurin cache: gradle - - name: Copy new api.txt files + - name: Copy existing api.txt files run: ./gradlew copyApiTxtFile - name: Checkout PR diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt index b8f2c5108fb..5c39d508fc7 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/BaseFirebaseLibraryPlugin.kt @@ -127,6 +127,20 @@ abstract class BaseFirebaseLibraryPlugin : Plugin { Coverage.apply(library) } + protected fun setupMetalavaSemver(project: Project, library: FirebaseLibraryExtension) { + project.tasks.register("copyApiTxtFile") { + apiTxtFile.set(project.file("api.txt")) + output.set(project.file("existing_api.txt")) + } + + project.tasks.register("metalavaSemver") { + apiTxtFile.set(project.file("api.txt")) + existingApiFile.set(project.file("existing_api.txt")) + currentVersionString.value(library.version) + previousVersionString.value(library.previousVersion) + } + } + protected fun getApiInfo( project: Project, srcDirs: ConfigurableFileCollection, diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt index c9266f4ae0a..14ec07a7cae 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseAndroidLibraryPlugin.kt @@ -161,17 +161,7 @@ class FirebaseAndroidLibraryPlugin : BaseFirebaseLibraryPlugin() { ) } - project.tasks.register("copyApiTxtFile") { - apiTxtFile.set(project.file("api.txt")) - output.set(project.file("old_api.txt")) - } - - project.tasks.register("metalavaSemver") { - apiTxtFile.set(project.file("api.txt")) - otherApiFile.set(project.file("old_api.txt")) - currentVersionString.value(firebaseLibrary.version) - previousVersionString.value(firebaseLibrary.previousVersion) - } + setupMetalavaSemver(project, firebaseLibrary) } private fun setupApiInformationAnalysis(project: Project, android: LibraryExtension) { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt index b3a8b1251cd..0e5a6aa3a51 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/FirebaseJavaLibraryPlugin.kt @@ -104,17 +104,7 @@ class FirebaseJavaLibraryPlugin : BaseFirebaseLibraryPlugin() { dependsOn("copyPreviousArtifacts") } - project.tasks.register("copyApiTxtFile") { - apiTxtFile.set(project.file("api.txt")) - output.set(project.file("old_api.txt")) - } - - project.tasks.register("metalavaSemver") { - apiTxtFile.set(project.file("api.txt")) - otherApiFile.set(project.file("old_api.txt")) - currentVersionString.value(firebaseLibrary.version) - previousVersionString.value(firebaseLibrary.previousVersion) - } + setupMetalavaSemver(project, firebaseLibrary) } private fun setupApiInformationAnalysis(project: Project) { diff --git a/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt b/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt index b26c9a83a32..833dd480278 100644 --- a/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt +++ b/plugins/src/main/java/com/google/firebase/gradle/plugins/SemVerTask.kt @@ -28,7 +28,7 @@ import org.gradle.api.tasks.TaskAction abstract class SemVerTask : DefaultTask() { @get:InputFile abstract val apiTxtFile: RegularFileProperty - @get:InputFile abstract val otherApiFile: RegularFileProperty + @get:InputFile abstract val existingApiFile: RegularFileProperty @get:Input abstract val currentVersionString: Property @get:Input abstract val previousVersionString: Property @@ -51,7 +51,7 @@ abstract class SemVerTask : DefaultTask() { "--source-files", apiTxtFile.get().asFile.absolutePath, "--check-compatibility:api:released", - otherApiFile.get().asFile.absolutePath, + existingApiFile.get().asFile.absolutePath, ) + MAJOR.flatMap { m -> listOf("--error", m) } + MINOR.flatMap { m -> listOf("--error", m) } +