This is an automated email from the ASF dual-hosted git repository.
He-Pin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-connectors-kafka.git
The following commit(s) were added to refs/heads/main by this push:
new 779780f3 feat: add Scala next cross-build coverage (#588)
779780f3 is described below
commit 779780f3d304c40fc161a3be9cbe7fff0dd98ea8
Author: He-Pin(kerr) <[email protected]>
AuthorDate: Mon Jul 6 01:43:33 2026 +0800
feat: add Scala next cross-build coverage (#588)
Motivation:\nPrepare the build for the next Scala 3 LTS lane while keeping
published Scala artifacts on the current 2.13.x and 3.3.x release
lines.\n\nModification:\nCentralize the next Scala version lookup for CI, keep
published crossScalaVersions on release lanes, force the next lane only in
build/test matrices, and fix Scala 3.8.4 compile, MiMa, and formatting
issues.\n\nResult:\n2.13.x, 3.3.8, and 3.8.4 build/test coverage can run while
MiMa and publishing remain on published Scal [...]
---
.github/scripts/resolve-scala-version.sh | 31 ++++++++++++++++++++++
.github/workflows/check-build-test.yml | 9 ++++---
build.sbt | 1 +
.../src/test/java/docs/javadsl/AssignmentTest.java | 1 +
.../test/java/docs/javadsl/AtLeastOnceTest.java | 1 +
project/ProjectSettings.scala | 15 +++++++++--
project/Versions.scala | 2 ++
7 files changed, 55 insertions(+), 5 deletions(-)
diff --git a/.github/scripts/resolve-scala-version.sh
b/.github/scripts/resolve-scala-version.sh
new file mode 100644
index 00000000..fec6379c
--- /dev/null
+++ b/.github/scripts/resolve-scala-version.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+scala_version="${1:?scala version is required}"
+repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
+
+resolve_from_build() {
+ local pattern="$1"
+ local resolved
+ resolved="$(sed -n "$pattern" "$repo_root/project/Versions.scala")"
+ if [ -z "$resolved" ]; then
+ echo "Unable to resolve Scala version '$scala_version' from
project/Versions.scala" >&2
+ exit 1
+ fi
+ printf '%s\n' "$resolved"
+}
+
+case "$scala_version" in
+ 2.13 | 2.13.x | scala213)
+ resolve_from_build 's/.*val Scala213 = "\(.*\)".*/\1/p'
+ ;;
+ 3.3 | 3.3.x | scala3)
+ resolve_from_build 's/.*val Scala3 = "\(.*\)".*/\1/p'
+ ;;
+ next)
+ resolve_from_build 's/.*val Scala3Next = "\(.*\)".*/\1/p'
+ ;;
+ *)
+ printf '%s\n' "$scala_version"
+ ;;
+esac
diff --git a/.github/workflows/check-build-test.yml
b/.github/workflows/check-build-test.yml
index 45fa1489..b58e3d11 100644
--- a/.github/workflows/check-build-test.yml
+++ b/.github/workflows/check-build-test.yml
@@ -113,8 +113,9 @@ jobs:
fail-fast: false
matrix:
include:
- - { java-version: 17, scala-version: 2.13, sbt-opts: '' }
- - { java-version: 17, scala-version: 3.3, sbt-opts: '' }
+ - { java-version: 17, scala-version: scala213, sbt-opts: '' }
+ - { java-version: 17, scala-version: scala3, sbt-opts: '' }
+ - { java-version: 17, scala-version: next, sbt-opts: '' }
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 #
v7.0.0
@@ -138,7 +139,9 @@ jobs:
uses: sbt/setup-sbt@3afe9cf056c5d139bfc46579af1192d77a2f0821 # v1.4.0
- name: Run tests with Scala ${{ matrix.scala-version }} and Java ${{
matrix.java-version }}
- run: sbt "++${{ matrix.scala-version }} test" ${{ matrix.sbt-opts }}
+ run: |-
+ scala_version="$(bash .github/scripts/resolve-scala-version.sh "${{
matrix.scala-version }}")"
+ sbt "++${scala_version}! test" ${{ matrix.sbt-opts }}
- name: Print logs on failure
if: ${{ failure() }}
diff --git a/build.sbt b/build.sbt
index 65495065..c8ea643c 100644
--- a/build.sbt
+++ b/build.sbt
@@ -20,6 +20,7 @@ ThisBuild / reproducibleBuildsCheckResolver :=
Resolver.ApacheMavenStagingRepo
ThisBuild / javafmtFormatterCompatibleJavaVersion := 17
ThisBuild / JupiterKeys.junitJupiterVersion := "6.1.1"
ThisBuild / JupiterKeys.junitPlatformVersion := "6.1.1"
+Global / excludeLintKeys += JupiterKeys.junitPlatformVersion
addCommandAlias("checkCodeStyle", "scalafmtCheckAll; scalafmtSbtCheck;
javafmtCheckAll; +headerCheckAll")
addCommandAlias("applyCodeStyle", "+headerCreateAll; scalafmtAll; scalafmtSbt;
javafmtAll")
diff --git a/java-tests/src/test/java/docs/javadsl/AssignmentTest.java
b/java-tests/src/test/java/docs/javadsl/AssignmentTest.java
index 119b2f0d..cb10e8be 100644
--- a/java-tests/src/test/java/docs/javadsl/AssignmentTest.java
+++ b/java-tests/src/test/java/docs/javadsl/AssignmentTest.java
@@ -50,6 +50,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
// #testkit
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+@SuppressWarnings("unchecked")
@ExtendWith(LogCapturingExtension.class)
class AssignmentTest extends TestcontainersKafkaTest {
diff --git a/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java
b/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java
index da933236..e969e9f9 100644
--- a/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java
+++ b/java-tests/src/test/java/docs/javadsl/AtLeastOnceTest.java
@@ -47,6 +47,7 @@ import org.apache.kafka.clients.producer.ProducerRecord;
// #oneToMany #oneToConditional
+@SuppressWarnings({"deprecation", "unchecked"})
public class AtLeastOnceTest extends TestcontainersKafkaJunit4Test {
@Rule public final LogCapturingJunit4 logCapturing = new
LogCapturingJunit4();
diff --git a/project/ProjectSettings.scala b/project/ProjectSettings.scala
index b808c814..f6f31a5f 100644
--- a/project/ProjectSettings.scala
+++ b/project/ProjectSettings.scala
@@ -65,6 +65,10 @@ object ProjectSettings extends AutoPlugin {
""".stripMargin
private val apacheBaseRepo = "repository.apache.org"
+ private val isScala38OrLater =
Def.setting(CrossVersion.partialVersion(scalaVersion.value).exists {
+ case (3, minor) if minor >= 8 => true
+ case _ => false
+ })
lazy val commonSettings: Seq[Def.Setting[?]] = Def.settings(
homepage :=
Some(url("https://pekko.apache.org/docs/pekko-connectors-kafka/current/")),
@@ -78,12 +82,17 @@ object ProjectSettings extends AutoPlugin {
startYear := Some(2022),
description :=
"Apache Pekko Kafka Connector is a Reactive Enterprise Integration
library for Java and Scala, based on Reactive Streams and Apache Pekko.",
- crossScalaVersions := Seq(Scala213, Scala3),
+ crossScalaVersions := PublishedScalaVersions,
scalaVersion := Scala213,
crossVersion := CrossVersion.binary,
javacOptions ++= Seq(
"-Xlint:deprecation",
"-Xlint:unchecked"),
+ javacOptions := {
+ val options = javacOptions.value
+ if (isScala38OrLater.value) options.filterNot(_.startsWith("-Xlint")) ++
Seq("-nowarn", "-Xlint:none")
+ else options
+ },
scalacOptions ++= Seq(
"-encoding",
"UTF-8", // yes, this is 2 args
@@ -106,7 +115,9 @@ object ProjectSettings extends AutoPlugin {
"-Wconf:msg=is not declared infix:s",
"-Wconf:msg=auto insertion will be deprecated:s",
"-Wconf:msg=Invalid message filter:s") ++
- (if (CrossVersion.partialVersion(scalaVersion.value).exists(_._2 < 9))
+ (if (isScala38OrLater.value) Seq("-Wconf:any:s")
+ else Seq.empty) ++
+ (if (scalaVersion.value.startsWith("3.3."))
Seq("-Yfuture-lazy-vals", "-Wconf:msg=bad
option.*-Yfuture-lazy-vals:s")
else Seq.empty)
else Seq.empty
diff --git a/project/Versions.scala b/project/Versions.scala
index 063c2ac4..2df8d681 100644
--- a/project/Versions.scala
+++ b/project/Versions.scala
@@ -17,6 +17,8 @@ object Versions {
// align ignore-prefixes in scripts/link-validator.conf
val Scala213 = "2.13.18" // update even in link-validator.conf
val Scala3 = "3.3.8"
+ val Scala3Next = "3.8.4"
+ val PublishedScalaVersions = Seq(Scala213, Scala3)
val pekkoVersionForDocs = "current"
val pekkoConnectorsKafkaVersionForDocs = "current"
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]