diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..2bf0c02e --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,69 @@ +name: test +on: + push: + branches: + - main + pull_request: + +jobs: + test: + strategy: + fail-fast: false + matrix: + java: [8, 11, 17] + scala: [2.11.12, 2.12.15, 2.13.6, 3.0.2] + platform: [jvm, js, native] + mode: [normal] + exclude: + - scala: 3.0.2 + platform: native + - java: 11 + platform: js + - java: 11 + platform: native + - java: 17 + platform: js + - java: 17 + platform: native + include: + - java: 8 + scala: 2.12.15 + mode: testScalafix + platform: jvm + - java: 8 + scala: 2.12.15 + mode: testBinaryCompat + platform: jvm + - java: 8 + scala: 2.12.15 + mode: testScalafmt + platform: jvm + - java: 8 + scala: 2.12.15 + mode: headerCheck + platform: jvm + - java: 11 + scala: 2.12.15 + mode: normal + platform: jvm + - java: 17 + scala: 2.12.15 + mode: normal + platform: jvm + runs-on: ubuntu-latest + env: + CI_JDK: ${{matrix.java}} + CI_SCALA_VERSION: ${{matrix.scala}} + CI_MODE: ${{matrix.mode}} + CI_PLATFORM: ${{matrix.platform}} + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - uses: coursier/cache-action@v6 + - uses: actions/setup-java@v2 + with: + distribution: temurin + java-version: ${{matrix.java}} + - name: ci + run: sbt ci diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e0f69674..00000000 --- a/.travis.yml +++ /dev/null @@ -1,46 +0,0 @@ -version: ~> 1.0 # needed for imports - -import: scala/scala-dev:travis/default.yml - -language: scala - -scala: - - 2.11.12 - - 2.12.15 - - 2.13.6 - - 3.0.2 - -env: - - SCALAJS_VERSION= ADOPTOPENJDK=8 - - SCALAJS_VERSION=1.7.0 ADOPTOPENJDK=8 - - SCALANATIVE_VERSION=0.4.0 ADOPTOPENJDK=8 - - SCALAJS_VERSION= ADOPTOPENJDK=11 - - SCALAJS_VERSION= ADOPTOPENJDK=17 - -matrix: - - include: - - # run migration test - - scala: 2.12.15 - env: TEST_SCALAFIX=true ADOPTOPENJDK=8 - - # run binary compatibility test - - scala: 2.12.15 - env: TEST_BINARY_COMPAT=true ADOPTOPENJDK=8 - - # run scalafmt - - scala: 2.12.15 - env: TEST_SCALAFMT=true ADOPTOPENJDK=8 - - exclude: - - # Scala Native doesn't support Scala 3 yet - - - scala: 3.0.2 - env: SCALANATIVE_VERSION=0.4.0 ADOPTOPENJDK=8 - -install: - - git fetch --tags # get all tags for sbt-dynver - -script: sbt ci diff --git a/build.sbt b/build.sbt index 1980f499..ab18238c 100644 --- a/build.sbt +++ b/build.sbt @@ -291,14 +291,15 @@ lazy val scalafixTests = project .dependsOn(scalafixInput, scalafixRules) .enablePlugins(BuildInfoPlugin, ScalafixTestkitPlugin) -val travisScalaVersion = sys.env.get("TRAVIS_SCALA_VERSION").flatMap(Version.parse) -val isTravisTag = sys.env.get("TRAVIS_TAG").exists(_.nonEmpty) -val isScalaJs = sys.env.get("SCALAJS_VERSION").exists(_.nonEmpty) -val isScalaNative = sys.env.get("SCALANATIVE_VERSION").exists(_.nonEmpty) -val isScalafix = sys.env.get("TEST_SCALAFIX").nonEmpty -val isScalafmt = sys.env.get("TEST_SCALAFMT").nonEmpty -val isBinaryCompat = sys.env.get("TEST_BINARY_COMPAT").nonEmpty -val jdkVersion = sys.env.get("ADOPTOPENJDK").map(_.toInt) +val ciScalaVersion = sys.env.get("CI_SCALA_VERSION").flatMap(Version.parse) +val isTravisTag = sys.env.get("CI_TAG").exists(_.nonEmpty) +val isScalaJs = sys.env.get("CI_PLATFORM") == Some("js") +val isScalaNative = sys.env.get("CI_PLATFORM") == Some("native") +val isScalafix = sys.env.get("CI_MODE") == Some("testScalafix") +val isScalafmt = sys.env.get("CI_MODE") == Some("testScalafmt") +val isBinaryCompat = sys.env.get("CI_MODE") == Some("testBinaryCompat") +val isHeaderCheck = sys.env.get("CI_MODE") == Some("headerCheck") +val jdkVersion = sys.env.get("CI_JDK").map(_.toInt) // required by sbt-scala-module inThisBuild { @@ -314,23 +315,23 @@ inThisBuild { }, commands += Command.command("ci") { state => val toRun: Seq[String] = - if (isScalafmt) { + if (isScalafmt) Seq("scalafmtTest") - } else { + else if (isHeaderCheck) + Seq("headerCheck") + else { List( - "TRAVIS_SCALA_VERSION", - "TRAVIS_TAG", - "SCALAJS_VERSION", - "SCALANATIVE_VERSION", - "TEST_SCALAFIX", - "TEST_SCALAFMT", - "TEST_BINARY_COMPAT" + "CI_SCALA_VERSION", + "CI_TAG", + "CI_PLATFORM", + "CI_MODE", + "CI_JDK", ).foreach(k => println(k.padTo(20, " ").mkString("") + " -> " + sys.env.getOrElse(k, "None"))) val platformSuffix = if (isScalaJs) "JS" else if (isScalaNative) "Native" else "" - val compatProject = "compat" + travisScalaVersion.get.binary + platformSuffix + val compatProject = "compat" + ciScalaVersion.get.binary + platformSuffix val binaryCompatProject = "binaryCompat" val testProjectPrefix = @@ -371,11 +372,10 @@ inThisBuild { } Seq( - List(s"""++${sys.env.get("TRAVIS_SCALA_VERSION").get}!"""), + List(s"""++${sys.env.get("CI_SCALA_VERSION").get}!"""), List(s"$projectPrefix/clean"), List(s"$testProjectPrefix/test"), List(s"$projectPrefix/publishLocal"), - List("headerCheck"), publishTask ).flatten }