Skip to content
Merged
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
19 changes: 18 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,23 @@ jobs:
- name: Run unit tests
run: sbt testUnit

mima:
runs-on: ubuntu-24.04
steps:
- name: Checkout current branch
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Setup Scala and Java
uses: coursier/setup-action@v3
with:
jvm: temurin:25
apps: sbt
- name: Cache scala dependencies
uses: coursier/cache-action@v8
- name: Check binary compatibility
run: sbt mima

docs:
runs-on: ubuntu-24.04
steps:
Expand Down Expand Up @@ -111,7 +128,7 @@ jobs:

publish:
runs-on: ubuntu-24.04
needs: [lint, unit, integration]
needs: [lint, unit, mima, integration]
if: github.event_name != 'pull_request'
steps:
- name: Checkout current branch
Expand Down
19 changes: 19 additions & 0 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ addCommandAlias("itKyo", "integrationTestsKyo/test")

addCommandAlias("exampleKyo", "examplesKyo/run")

addCommandAlias(
"mima",
"all core/mimaReportBinaryIssues opentelemetry/mimaReportBinaryIssues compatCe/mimaReportBinaryIssues " +
"clientZio/mimaReportBinaryIssues clientCe/mimaReportBinaryIssues clientOx/mimaReportBinaryIssues " +
"clientPekko/mimaReportBinaryIssues clientKyo/mimaReportBinaryIssues"
)

addCommandAlias(
"docAll",
"all core/doc opentelemetry/doc compatCe/doc clientZio/doc clientCe/doc clientOx/doc clientPekko/doc clientKyo/doc"
Expand All @@ -96,6 +103,7 @@ lazy val root = project
lazy val core = (projectMatrix in file("sage-core"))
.settings(name := "sage-core")
.settings(commonSettings)
.settings(mimaSettings)
.settings(parallelUnitTests)
.defaultAxes(VirtualAxis.jvm, VirtualAxis.scalaVersionAxis(scala3Version, scala3Version))
.customRow(
Expand All @@ -109,6 +117,7 @@ lazy val opentelemetry = (projectMatrix in file("sage-opentelemetry"))
.dependsOn(core)
.settings(name := "sage-opentelemetry")
.settings(commonSettings)
.settings(mimaSettings)
.settings(parallelUnitTests)
.settings(
libraryDependencies ++= Seq(
Expand All @@ -130,6 +139,7 @@ lazy val compatCe = project
.in(file("sage-compat-ce"))
.settings(name := "sage-compat-ce")
.settings(commonSettings)
.settings(mimaSettings)
.settings(
libraryDependencies ++= Seq(
"org.typelevel" %% "cats-effect" % catsEffectVersion,
Expand All @@ -152,6 +162,7 @@ lazy val client = (projectMatrix in file("sage-client"))
.enablePlugins(BuildInfoPlugin)
.settings(name := "sage-client")
.settings(commonSettings)
.settings(mimaSettings)
.settings(parallelUnitTests)
.settings(
// compatLibrary emits an implicit Future anchor row; it's a compile-only baseline, never published
Expand Down Expand Up @@ -279,6 +290,14 @@ lazy val commonSettings = Def.settings(
Test / fork := true
)

lazy val mimaSettings = Def.settings(
// the unpublished Future anchor row has no previous release to compare against
mimaPreviousArtifacts := {
if (moduleName.value.endsWith("-future")) Set.empty
else previousStableVersion.value.map(organization.value %% moduleName.value % _).toSet
}
)

// Only for container-free cells: integration suites each boot their own container, so running them in
// parallel would multiply peak load and invite timing races
lazy val parallelUnitTests = Def.settings(Test / testForkedParallel := true)
1 change: 1 addition & 0 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ addSbtPlugin("com.eed3si9n" % "sbt-projectmatrix" % "0.11.0")
addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.13.2")
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.6.2")
addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.12.1")
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.2.1")
addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.8")