Skip to content

Commit 47dcc85

Browse files
committed
Merge branch 'master' into firebase-sessions
2 parents 14fc4a8 + 02b3365 commit 47dcc85

File tree

46 files changed

+894
-116
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+894
-116
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Check Head Dependencies
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
branches:
7+
- 'releases/**'
8+
9+
jobs:
10+
build-artifacts:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v3
14+
15+
- name: Perform gradle build
16+
run: |
17+
./gradlew checkHeadDependencies -PpublishConfigFilePath=release.cfg -PpublishMode=RELEASE -PincludeFireEscapeArtifacts=true
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
name: Validate Artifact Dependencies
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
branches:
7+
- 'releases/**'
8+
9+
jobs:
10+
build-artifacts:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v3
14+
15+
- name: Perform gradle build
16+
run: |
17+
./gradlew validatePomForRelease -PpublishConfigFilePath=release.cfg -PpublishMode=RELEASE -PincludeFireEscapeArtifacts=true

appcheck/firebase-appcheck-debug-testing/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# Unreleased
2+
3+
# 16.1.2
24
* [unchanged] Updated to keep [app_check] SDK versions aligned.
35

46
# 16.1.1
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=16.1.2
2-
latestReleasedVersion=16.1.1
1+
version=16.1.3
2+
latestReleasedVersion=16.1.2

appcheck/firebase-appcheck-debug/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# Unreleased
2+
3+
# 16.1.2
24
* [unchanged] Updated to keep [app_check] SDK versions aligned.
35

46
# 16.1.1
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=16.1.2
2-
latestReleasedVersion=16.1.1
1+
version=16.1.3
2+
latestReleasedVersion=16.1.2

appcheck/firebase-appcheck-playintegrity/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# Unreleased
2+
3+
# 16.1.2
24
* [unchanged] Updated to keep [app_check] SDK versions aligned.
35

46
# 16.1.1
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=16.1.2
2-
latestReleasedVersion=16.1.1
1+
version=16.1.3
2+
latestReleasedVersion=16.1.2

appcheck/firebase-appcheck-safetynet/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
# Unreleased
2+
3+
# 16.1.2
24
* [deprecated] Added deprecation tagging to the `SafetyNetAppCheckProviderFactory` class. (#4686)
35

46
# 16.1.1
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=16.1.2
2-
latestReleasedVersion=16.1.1
1+
version=16.1.3
2+
latestReleasedVersion=16.1.2

appcheck/firebase-appcheck/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Unreleased
2-
* [unchanged] Updated to keep [app_check] SDK versions aligned.
32

3+
# 16.1.2
4+
* [unchanged] Updated to keep [app_check] SDK versions aligned.
45

56
# 16.1.1
67
* [changed] Migrated [app_check] SDKs to use standard Firebase executors.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
version=16.1.2
2-
latestReleasedVersion=16.1.1
1+
version=16.1.3
2+
latestReleasedVersion=16.1.2

buildSrc/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ val perfPluginVersion = System.getenv("FIREBASE_PERF_PLUGIN_VERSION") ?: "1.4.1"
3333

3434
googleJavaFormat {
3535
toolVersion = "1.15.0"
36+
exclude(".gradle/**")
3637
}
3738

3839
ktfmt {
@@ -66,6 +67,7 @@ dependencies {
6667
implementation("com.android.tools.build:builder-test-api:7.2.2")
6768
implementation("gradle.plugin.com.github.sherter.google-java-format:google-java-format-gradle-plugin:0.9")
6869

70+
testImplementation(libs.bundles.kotest)
6971
testImplementation("junit:junit:4.13.2")
7072
testImplementation("com.google.truth:truth:1.1.2")
7173
testImplementation("commons-io:commons-io:2.6")

buildSrc/settings.gradle.kts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright 2023 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
dependencyResolutionManagement {
16+
versionCatalogs {
17+
create("libs") {
18+
from(files("../gradle/libs.versions.toml"))
19+
}
20+
}
21+
}

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,15 @@ abstract class BaseFirebaseLibraryPlugin : Plugin<Project> {
7272
return apiInfo
7373
}
7474

75+
protected fun getIsPomValidTask(project: Project, firebaseLibrary: FirebaseLibraryExtension) {
76+
project.tasks.register<PomValidator>("isPomDependencyValid") {
77+
pomFilePath.value(project.file("build/publications/mavenAar/pom-default.xml"))
78+
groupId.value(firebaseLibrary.groupId.get())
79+
artifactId.value(firebaseLibrary.artifactId.get())
80+
dependsOn("generatePomFileForMavenAarPublication")
81+
}
82+
}
83+
7584
protected fun getGenerateApiTxt(project: Project, srcDirs: Set<File>) =
7685
project.tasks.register<GenerateApiTxtTask>("generateApiTxtFile") {
7786
sources.value(project.provider { srcDirs })
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright 2022 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package com.google.firebase.gradle.plugins
16+
17+
import org.gradle.api.DefaultTask
18+
import org.gradle.api.GradleException
19+
import org.gradle.api.artifacts.ProjectDependency
20+
import org.gradle.api.provider.ListProperty
21+
import org.gradle.api.tasks.Input
22+
import org.gradle.api.tasks.TaskAction
23+
24+
abstract class CheckHeadDependencies : DefaultTask() {
25+
@get:Input abstract val projectsToPublish: ListProperty<FirebaseLibraryExtension>
26+
27+
@get:Input abstract val allFirebaseProjects: ListProperty<String>
28+
29+
@TaskAction
30+
fun run() {
31+
val projectsReleasing: Set<String> = projectsToPublish.get().map { it.artifactId.get() }.toSet()
32+
val projectsToRelease =
33+
projectsToPublish
34+
.get()
35+
.flatMap {
36+
it.project.configurations
37+
.getByName(it.runtimeClasspath)
38+
.allDependencies
39+
.filter { it is ProjectDependency }
40+
.map { it.name }
41+
.toSet()
42+
}
43+
.intersect(allFirebaseProjects.get())
44+
.subtract(projectsReleasing)
45+
46+
if (projectsToRelease.isNotEmpty()) {
47+
throw GradleException(
48+
"Following Sdks have to release as well. Please update the release config.\n${projectsToRelease.joinToString("\n")}"
49+
)
50+
}
51+
}
52+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class FirebaseJavaLibraryPlugin : BaseFirebaseLibraryPlugin() {
4747

4848
setupStaticAnalysis(project, firebaseLibrary)
4949
setupApiInformationAnalysis(project)
50+
getIsPomValidTask(project, firebaseLibrary)
5051
configurePublishing(project, firebaseLibrary)
5152
}
5253

@@ -55,6 +56,7 @@ class FirebaseJavaLibraryPlugin : BaseFirebaseLibraryPlugin() {
5556
project.convention.getPlugin<JavaPluginConvention>().sourceSets.getByName("main").java.srcDirs
5657

5758
val apiInfo = getApiInfo(project, srcDirs)
59+
5860
val generateApiTxt = getGenerateApiTxt(project, srcDirs)
5961
val docStubs = getDocStubs(project, srcDirs)
6062

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class FirebaseLibraryPlugin : BaseFirebaseLibraryPlugin() {
4949

5050
project.apply<DackkaPlugin>()
5151
project.apply<GitSubmodulePlugin>()
52+
project.apply<PostReleasePlugin>()
5253
project.tasks.getByName("preBuild").dependsOn("updateGitSubmodules")
5354
}
5455

@@ -79,6 +80,7 @@ class FirebaseLibraryPlugin : BaseFirebaseLibraryPlugin() {
7980
setupApiInformationAnalysis(project, android)
8081
android.testServer(FirebaseTestServer(project, firebaseLibrary.testLab, android))
8182
setupStaticAnalysis(project, firebaseLibrary)
83+
getIsPomValidTask(project, firebaseLibrary)
8284
configurePublishing(project, firebaseLibrary, android)
8385
}
8486

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright 2023 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package com.google.firebase.gradle.plugins
16+
17+
import java.io.FileNotFoundException
18+
import java.net.URL
19+
import javax.xml.parsers.DocumentBuilder
20+
import javax.xml.parsers.DocumentBuilderFactory
21+
import org.w3c.dom.Document
22+
23+
class GmavenHelper(val groupId: String, val artifactId: String) {
24+
val GMAVEN_ROOT = "https://dl.google.com/dl/android/maven2"
25+
26+
fun getPomFileForVersion(version: String): String {
27+
val pomFileName = "${artifactId}-${version}.pom"
28+
val groupIdAsPath = groupId.replace(".", "/")
29+
return "${GMAVEN_ROOT}/${groupIdAsPath}/${artifactId}/${version}/${pomFileName}"
30+
}
31+
32+
fun getLatestReleasedVersion(): String {
33+
try {
34+
val groupIdAsPath = groupId.replace(".", "/")
35+
val mavenMetadataUrl = "${GMAVEN_ROOT}/${groupIdAsPath}/${artifactId}/maven-metadata.xml"
36+
val factory: DocumentBuilderFactory = DocumentBuilderFactory.newInstance()
37+
val builder: DocumentBuilder = factory.newDocumentBuilder()
38+
val doc: Document = builder.parse(URL(mavenMetadataUrl).openStream())
39+
doc.documentElement.normalize()
40+
return doc.getElementsByTagName("latest").item(0).getTextContent()
41+
} catch (e: FileNotFoundException) {
42+
return ""
43+
}
44+
}
45+
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,15 @@ fun String.remove(regex: Regex) = replace(regex, "")
1919

2020
/** Replaces all matching substrings with an empty string (nothing) */
2121
fun String.remove(str: String) = replace(str, "")
22+
23+
/**
24+
* Returns a sequence containing all elements.
25+
*
26+
* The operation is _terminal_.
27+
*
28+
* Syntax sugar for:
29+
* ```
30+
* take(count())
31+
* ```
32+
*/
33+
public fun <T> Sequence<T>.takeAll(): Sequence<T> = take(count())

0 commit comments

Comments
 (0)