From 18ab433d13aa27fb63c440dd92402c01bf049ad8 Mon Sep 17 00:00:00 2001 From: geirolz Date: Mon, 8 Jan 2024 15:24:21 +0100 Subject: [PATCH] Add mima checks --- .github/workflows/cicd.yml | 6 +++--- build.sbt | 36 ++++++++++++++++++++++++++++-------- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index f6736d1..6babef4 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -30,10 +30,10 @@ jobs: include: - scala: 2.13.12 name: Scala2_13 - test-tasks: coverage test coverageReport gen-doc - - scala: 3.3.0 + test-tasks: coverage test coverageReport gen-doc mimaCheck + - scala: 3.3.1 name: Scala3_3 - test-tasks: coverage test coverageReport + test-tasks: coverage test coverageReport mimaCheck steps: - uses: actions/checkout@v4 diff --git a/build.sbt b/build.sbt index 59ba4ed..5528c29 100644 --- a/build.sbt +++ b/build.sbt @@ -10,7 +10,7 @@ lazy val scala33 = "3.3.1" lazy val supportedScalaVersions = List(scala213, scala33) //## global project to no publish ## -lazy val fly4s: Project = project +lazy val root: Project = project .in(file(".")) .settings( inThisBuild( @@ -25,8 +25,7 @@ lazy val fly4s: Project = project "david.geirola@gmail.com", url("https://github.com/geirolz") ) - ), - mimaPreviousArtifacts := Set(prjOrg %% prjName % "1.0.0") + ) ) ) ) @@ -39,8 +38,9 @@ lazy val fly4s: Project = project lazy val core: Project = module("core")( - folder = "./core", - publishAs = Some(prjName) + folder = "./core", + publishAs = Some(prjName), + mimaCompatibleWith = Set("1.0.0") ).settings( libraryDependencies ++= { CrossVersion.partialVersion(Keys.scalaVersion.value) match { @@ -51,7 +51,11 @@ lazy val core: Project = ) //=============================== MODULES UTILS =============================== -def module(modName: String)(folder: String, publishAs: Option[String] = None): Project = { +def module(modName: String)( + folder: String, + publishAs: Option[String] = None, + mimaCompatibleWith: Set[String] = Set.empty +): Project = { val keys = modName.split("-") val modDocName = keys.mkString(" ") val docNameStr = s"$prjName $modDocName" @@ -64,6 +68,13 @@ def module(modName: String)(folder: String, publishAs: Option[String] = None): P ) case None => noPublishSettings } + + val mimaSettings = Seq( + mimaPreviousArtifacts := mimaCompatibleWith.map { version => + organization.value % s"${moduleName.value}_${scalaBinaryVersion.value}" % version + } + ) + Project(modName, file(folder)) .settings( name := s"$prjName $modDocName", @@ -77,9 +88,11 @@ def module(modName: String)(folder: String, publishAs: Option[String] = None): P "MODULE_NAME" -> moduleName.value, "VERSION" -> previousStableVersion.value.getOrElse("") ), + mimaSettings, publishSettings, baseSettings - ).enablePlugins(ModuleMdocPlugin) + ) + .enablePlugins(ModuleMdocPlugin) } def subProjectName(modPublishName: String): String = s"$prjName-$modPublishName" @@ -182,5 +195,12 @@ addCommandAlias( "gen-doc", List( core - ).map(prj => s"project ${prj.id}-docs; mdoc").mkString(";") + s";project $prjName;" + ).map(prj => s"project ${prj.id}-docs; mdoc").mkString(";") + s";project root;" +) +addCommandAlias( + "mimaCheck", + List( + core + ).map(prj => s"project ${prj.id}; mimaReportBinaryIssues") + .mkString(";") + s";project root;" )