Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/check-dependency-updates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,4 @@ jobs:
run: ./gradlew checkDependencyUpdates --no-configuration-cache --stacktrace

- name: Update summary
run: cat build/reports/dependencies-update.md >> $GITHUB_STEP_SUMMARY
run: cat ./build/reports/dependency-updates.md >> $GITHUB_STEP_SUMMARY
3 changes: 2 additions & 1 deletion RELEASE_CHECK_LIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
- For major releases: update a project version in the file [`v.list`](https://github.com/Kotlin/dataframe/blame/master/docs/StardustDocs/v.list)
- For major releases: update a project version in the file [`main.yml`](https://github.com/Kotlin/dataframe/blob/master/.github/workflows/main.yml)
- For major releases: update a project version in the file [`project.ihp`](https://github.com/Kotlin/dataframe/blob/master/docs/StardustDocs/project.ihp)
7. Update `libs.versions.toml` file if required, run `./gradlew dependencyUpdates` to check for updates. **RC**
7. Update `libs.versions.toml` file if required, run `./gradlew checkDependencyUpdates` to check for updates. **RC**
Alternatively, check the [GitHub Actions output](https://github.com/Kotlin/dataframe/actions/workflows/check-dependency-updates.yml).
8. Create and checkout the release branch. **RC**
9. Make last commit with release tag (_v0.1.1_ for example) to the release branch. **RC**
10. Run tests and build artifacts on TC for the commit with the release tag. **RC**
Expand Down
13 changes: 11 additions & 2 deletions build-logic/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@ acting as [Convention Plugins](https://docs.gradle.org/current/userguide/impleme
- NOTE: Only apply this plugin to the root project!
- NOTE: Add every dependency version that needs to be synced to the `libs.versions.toml` file of the example in
the `versionsToSync` list!
- NOTE: Add every dependency used in each example project to `dependencies { exampleDependencyUpdates() }`
so `dependencyUpdates` can detect outdated dependencies in examples.

- Projects inside `/examples/projects` are built using the latest release version of DataFrame.
They are meant to be downloadable as separate projects by users.
Expand Down Expand Up @@ -79,3 +77,14 @@ acting as [Convention Plugins](https://docs.gradle.org/current/userguide/impleme
code in Notebooks or any of our [plugins](../plugins). Words like "package", "fun", "suspend", etc...
As the Kotlin language can change over time, this task ensures that any changes to the language
will be reflected in our code generation.

- `dfbuild.caupain`: Allows tracking updates for dependencies in `/gradle/libs.versions.toml`.
This plugin is meant to be applied only to the main project.
- See https://github.com/deezer/caupain/tree/main for more information.
- Run `checkDependencyUpdates` to check for outdated dependencies.
This produces a report in the terminal, and as HTML and Markdown files in `/build/reports`.
- There's also `replaceOutdatedDependencies` to replace outdated dependencies directly in the
`/gradle/libs.versions.toml` file, but be careful.
- Comment `#ignoreUpdates` in `/gradle/libs.versions.toml` to ignore updates for specific dependencies.
- `/.github/workflows/check-dependency-updates.yml` is a Github Action which runs `checkDependencyUpdates`.

Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ import dfbuild.buildExampleProjects.isAndroid
import dfbuild.buildExampleProjects.setupGradleSyncVersionsTask
import dfbuild.buildExampleProjects.setupMavenSyncVersionsTask
import dfbuild.getVersionName
import org.gradle.api.provider.Provider
import org.gradle.internal.extensions.stdlib.capitalized
import org.gradle.plugin.use.PluginDependency
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlinx.dataframe.impl.toCamelCaseByDelimiters
Expand Down Expand Up @@ -58,96 +56,6 @@ val versionsToSync =
)
}.map { it.getVersionName() }

val exampleDependencyUpdates by configurations.creating {
isCanBeResolved = true
isCanBeConsumed = false
isVisible = false
}

/**
* Every library and plugin used by the projects in /examples/projects (excluding deps already
* declared by the root build itself, which `dependencyUpdates` picks up anyway).
*
* This makes the ben-manes `dependencyUpdates` task aware of example-only dependencies without
* having to apply the plugin inside the example projects.
*/
dependencies {
// android-example
exampleDependencyUpdates(libs.androidx.core.ktx)
exampleDependencyUpdates(libs.androidx.junit)
exampleDependencyUpdates(libs.androidx.espresso.core)
exampleDependencyUpdates(libs.androidx.lifecycle.runtime.ktx)
exampleDependencyUpdates(libs.androidx.activity.compose)
// BOM-managed compose artifacts (versions come from the BOM)
exampleDependencyUpdates(platform(libs.androidx.compose.bom))
exampleDependencyUpdates(libs.androidx.ui)
exampleDependencyUpdates(libs.androidx.ui.graphics)
exampleDependencyUpdates(libs.androidx.ui.tooling)
exampleDependencyUpdates(libs.androidx.ui.tooling.preview)
exampleDependencyUpdates(libs.androidx.ui.test.manifest)
exampleDependencyUpdates(libs.androidx.ui.test.junit4)
exampleDependencyUpdates(libs.androidx.material3)
exampleDependencyUpdates(pluginMarker(libs.plugins.android.application))
exampleDependencyUpdates(pluginMarker(libs.plugins.kotlin.android))
exampleDependencyUpdates(pluginMarker(libs.plugins.kotlin.compose))

// exposed
exampleDependencyUpdates(libs.sqlite)
exampleDependencyUpdates(libs.exposed.core)
exampleDependencyUpdates(libs.exposed.kotlin.datetime)
exampleDependencyUpdates(libs.exposed.jdbc)
exampleDependencyUpdates(libs.exposed.json)
exampleDependencyUpdates(libs.exposed.money)

// hibernate
exampleDependencyUpdates(libs.hibernate.core)
exampleDependencyUpdates(libs.hibernate.hikaricp)
exampleDependencyUpdates(libs.hikaricp)
exampleDependencyUpdates(libs.h2db)
exampleDependencyUpdates(libs.sl4jsimple)

// json-openapi
exampleDependencyUpdates(libs.dataframe.openapi)
exampleDependencyUpdates(libs.dataframe.openapi.generator)

// kotlin-dataframe-plugin-gradle-example
exampleDependencyUpdates(libs.dataframe)
exampleDependencyUpdates(libs.kandy)

// kotlin-dataframe-plugin-maven-example
exampleDependencyUpdates(libs.maven.exec.plugin)
exampleDependencyUpdates(libs.maven.surefire.plugin)

// kotlin-spark
exampleDependencyUpdates(libs.spark3.sql)
exampleDependencyUpdates(libs.kotlin.spark)
exampleDependencyUpdates(libs.log4j.core)
exampleDependencyUpdates(libs.log4j.api)

// movies
// all already here

// multik
exampleDependencyUpdates(libs.multik.core)
exampleDependencyUpdates(libs.multik.default)

// spark-parquet-dataframe
exampleDependencyUpdates(libs.spark4.sql)
exampleDependencyUpdates(libs.spark4.mllib)

// titanic
exampleDependencyUpdates(libs.kotlin.dl.api)
exampleDependencyUpdates(libs.kotlin.dl.impl)
exampleDependencyUpdates(libs.kotlin.dl.tensorflow)
exampleDependencyUpdates(libs.kotlin.dl.dataset)

// youtube
exampleDependencyUpdates(libs.kotlin.datetimeJvm)
}

private fun pluginMarker(provider: Provider<PluginDependency>): Provider<String> =
provider.map { "${it.pluginId}:${it.pluginId}.gradle.plugin:${it.version}" }

val syncAllExampleFolders by tasks.registering {
group = buildExampleProjectsGroup
description = "Sync the versions in the nested projects in /examples/projects"
Expand Down
30 changes: 30 additions & 0 deletions build-logic/src/main/kotlin/dfbuild.caupain.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import com.deezer.caupain.plugin.DependenciesUpdateTask
import com.deezer.caupain.policies.StabilityLevelPolicy

plugins {
alias(conventions.plugins.dfbuild.base)

alias(libs.plugins.caupain)
}

caupain {
showVersionReferences = true
repositories {
libraries = libraries.get()
.filterNot { it.url == "https://redirector.kotlinlang.org/maven/bootstrap" }
}
outputs {
markdown { enabled = true }
}
System.getenv("CAUPAIN_GITHUB_TOKEN")?.let {
githubToken = it
searchReleaseNote = true
}
}

tasks.withType<DependenciesUpdateTask> {
selectIf {
StabilityLevelPolicy.select(dependency, currentVersion, updatedVersion) &&
!updatedVersion.text.matches("^.*-preview([0-9]+)?$".toRegex())
}
}
77 changes: 0 additions & 77 deletions build-logic/src/main/kotlin/dfbuild.dependencyUpdates.gradle.kts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@ pluginManagement {
gradlePluginPortal()
mavenCentral()
maven("https://redirector.kotlinlang.org/maven/bootstrap")
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
}
}

Expand Down
3 changes: 1 addition & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@ plugins {
with(conventions.plugins.dfbuild) {
alias(kotlinJvm8)
alias(buildExampleProjects)
alias(dependencyUpdates)
alias(caupain)
}

with(libs.plugins) {
alias(publisher)
alias(serialization) apply false
Expand Down
11 changes: 8 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,20 +45,25 @@ kotlinLogging = "8.0.4"
sl4j = "2.0.18"
log4j = "2.26.1"

# ignoreUpdates
junit = "4.13.2" # Issue #426
# ignoreUpdates
junit-jupiter = "5.11.3"
# ignoreUpdates
junit-platform = "1.11.3" # Issue #426
kotestAsserions = "6.2.2"

jsoup = "1.22.2"
arrow = "19.0.0"
kodex = "0.5.4"
simpleGit = "2.3.1"
dependencyVersions = "0.54.0"
caupain = "1.9.1"
plugin-publish = "2.1.1"
shadow = "9.5.1"
# ignoreUpdates
android-gradle-api = "7.3.1" # unused for now
ktor = "3.5.1"
# ignoreUpdates
kotlin-compile-testing = "0.7.1" # unused for now
hikari = "7.1.0"
duckdb = "1.5.4.0"
Expand All @@ -77,7 +82,7 @@ hibernate = "7.4.4.Final"

# check the versions down in the [libraries] section too!
kotlin-spark = "1.2.4"
spark3 = "3.3.2"
spark3 = "3.3.2" # ignoreUpdates
spark4 = "4.1.2"

multik = "0.3.1"
Expand Down Expand Up @@ -263,7 +268,7 @@ kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", versi
kodex = { id = "nl.jolanrensen.kodex", version.ref = "kodex" }
simpleGit = { id = "xyz.ronella.simple-git", version.ref = "simpleGit" }
serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
dependencyVersions = { id = "com.github.ben-manes.versions", version.ref = "dependencyVersions" }
caupain = { id = "com.deezer.caupain", version.ref = "caupain" }
plugin-publish = { id = "com.gradle.plugin-publish", version.ref = "plugin-publish" }
shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }
buildconfig = { id = "com.github.gmazzo.buildconfig", version.ref = "buildconfig" }
Expand Down
Loading