diff --git a/.github/workflows/android.yaml b/.github/workflows/android.yaml index 27a8aafc9..b0046814c 100644 --- a/.github/workflows/android.yaml +++ b/.github/workflows/android.yaml @@ -96,6 +96,9 @@ jobs: - name: Gradle capture-timber unit tests working-directory: ./platform/jvm run: ./gradlew capture-timber:testReleaseUnitTest --info + - name: Check Licenses for modules + working-directory: ./platform/jvm + run: ./gradlew replay:checkLicense common:checkLicense # capture:checkLicense doesn't work at the moment - name: Instrumentation Tests uses: reactivecircus/android-emulator-runner@f0d1ed2dcad93c7479e8b2f2226c83af54494915 # pin@v2.32 with: diff --git a/platform/jvm/allowed-licenses.json b/platform/jvm/allowed-licenses.json new file mode 100644 index 000000000..dbcd45464 --- /dev/null +++ b/platform/jvm/allowed-licenses.json @@ -0,0 +1,23 @@ +{ + "allowedLicenses": [ + { + "moduleLicense": "Apache-2.0" + }, + { + "moduleLicense": "MIT" + }, + { + "moduleLicense": "ISC License", + }, + { + "moduleLicense": null, + "moduleVersion": "unspecified", + "moduleName": "capture-sdk:common" + }, + { + "moduleLicense": null, + "moduleVersion": "unspecified", + "moduleName": "capture-sdk:replay" + } + ] +} \ No newline at end of file diff --git a/platform/jvm/buildSrc/build.gradle.kts b/platform/jvm/buildSrc/build.gradle.kts new file mode 100644 index 000000000..38fc94bb3 --- /dev/null +++ b/platform/jvm/buildSrc/build.gradle.kts @@ -0,0 +1,14 @@ +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() + maven("https://plugins.gradle.org/m2/") +} + +dependencies { + // Pulls in dependencies to be used across shared configurations via files in src/main/kotlin + // using precompiled script convention plugins: https://docs.gradle.org/current/userguide/sharing_build_logic_between_subprojects.html + implementation("com.github.jk1:gradle-license-report:2.9") +} diff --git a/platform/jvm/buildSrc/src/main/kotlin/dependency-license-config.gradle.kts b/platform/jvm/buildSrc/src/main/kotlin/dependency-license-config.gradle.kts new file mode 100644 index 000000000..1f4d53d89 --- /dev/null +++ b/platform/jvm/buildSrc/src/main/kotlin/dependency-license-config.gradle.kts @@ -0,0 +1,13 @@ +import com.github.jk1.license.filter.SpdxLicenseBundleNormalizer +import com.github.jk1.license.render.JsonReportRenderer + +plugins { + id("com.github.jk1.dependency-license-report") +} + +licenseReport { + configurations = arrayOf("releaseRuntimeClasspath") + allowedLicensesFile = project.rootProject.file("allowed-licenses.json") + renderers = arrayOf(JsonReportRenderer()) + filters = arrayOf(SpdxLicenseBundleNormalizer()) +} diff --git a/platform/jvm/capture-apollo3/build.gradle.kts b/platform/jvm/capture-apollo3/build.gradle.kts index a7133fb49..5f72883da 100644 --- a/platform/jvm/capture-apollo3/build.gradle.kts +++ b/platform/jvm/capture-apollo3/build.gradle.kts @@ -2,6 +2,8 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) alias(libs.plugins.detekt) + + id("dependency-license-config") } group = "io.bitdrift" diff --git a/platform/jvm/capture-timber/build.gradle.kts b/platform/jvm/capture-timber/build.gradle.kts index 8f1dcec0d..6fd02c774 100644 --- a/platform/jvm/capture-timber/build.gradle.kts +++ b/platform/jvm/capture-timber/build.gradle.kts @@ -6,6 +6,8 @@ plugins { // Publish alias(libs.plugins.dokka) // Must be applied here for publish plugin. alias(libs.plugins.maven.publish) + + id("dependency-license-config") } group = "io.bitdrift" diff --git a/platform/jvm/capture/build.gradle.kts b/platform/jvm/capture/build.gradle.kts index cf9041316..97c39a168 100644 --- a/platform/jvm/capture/build.gradle.kts +++ b/platform/jvm/capture/build.gradle.kts @@ -7,6 +7,8 @@ plugins { // Publish alias(libs.plugins.dokka) // Must be applied here for publish plugin. alias(libs.plugins.maven.publish) + + id("dependency-license-config") } group = "io.bitdrift" @@ -18,11 +20,11 @@ dependencies { api(libs.kotlin.result.jvm) api(libs.okhttp) + implementation(project(":common")) implementation(libs.androidx.core) implementation(libs.androidx.startup.runtime) implementation(libs.jsr305) implementation(libs.gson) - implementation("androidx.tracing:tracing-ktx:1.2.0") testImplementation(libs.junit) testImplementation(libs.assertj.core) diff --git a/platform/jvm/common/build.gradle.kts b/platform/jvm/common/build.gradle.kts index cfb59d21e..aec7e2bb8 100644 --- a/platform/jvm/common/build.gradle.kts +++ b/platform/jvm/common/build.gradle.kts @@ -1,6 +1,8 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + + id("dependency-license-config") } android { diff --git a/platform/jvm/gradle-test-app/build.gradle.kts b/platform/jvm/gradle-test-app/build.gradle.kts index 978c18b0a..f76a707f5 100644 --- a/platform/jvm/gradle-test-app/build.gradle.kts +++ b/platform/jvm/gradle-test-app/build.gradle.kts @@ -25,6 +25,7 @@ dependencies { testImplementation("junit:junit:4.13.2") + androidTestImplementation(project(":common")) androidTestImplementation("com.google.truth:truth:1.1.4") androidTestImplementation("androidx.test:core:1.5.0") androidTestImplementation("androidx.test:core-ktx:1.5.0") diff --git a/platform/jvm/replay/build.gradle.kts b/platform/jvm/replay/build.gradle.kts index 1c16d3cfc..42932b7ee 100644 --- a/platform/jvm/replay/build.gradle.kts +++ b/platform/jvm/replay/build.gradle.kts @@ -1,11 +1,12 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) + + id("dependency-license-config") } dependencies { - api(project(":common")) - + implementation(project(":common")) implementation(libs.androidx.appcompat) implementation(libs.androidx.ui) implementation(libs.okhttp)