diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7883b18..d426848 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,11 +22,24 @@ jobs: name: Build and Test strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-latest, windows-latest] scala: [2.12.18, 2.13.12, 3.3.1] java: [temurin@8, temurin@11, temurin@17] runs-on: ${{ matrix.os }} steps: + - name: Ignore line ending differences in git + if: contains(runner.os, 'windows') + shell: bash + run: git config --global core.autocrlf false + + - name: Configure pagefile for Windows + if: contains(runner.os, 'windows') + uses: al-cheb/configure-pagefile-action@v1.3 + with: + minimum-size: 2GB + maximum-size: 8GB + disk-root: 'C:' + - name: Checkout current branch (full) uses: actions/checkout@v4 with: @@ -34,7 +47,7 @@ jobs: - name: Setup Java (temurin@8) if: matrix.java == 'temurin@8' - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: temurin java-version: 8 @@ -42,7 +55,7 @@ jobs: - name: Setup Java (temurin@11) if: matrix.java == 'temurin@11' - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: temurin java-version: 11 @@ -50,32 +63,37 @@ jobs: - name: Setup Java (temurin@17) if: matrix.java == 'temurin@17' - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 cache: sbt - name: Check that workflows are up to date + shell: bash run: sbt '++ ${{ matrix.scala }}' githubWorkflowCheck - name: Report binary compatibility issues + shell: bash run: sbt '++ ${{ matrix.scala }}' mimaReportBinaryIssues - name: Build project + shell: bash run: sbt '++ ${{ matrix.scala }}' clean coverage test - name: Upload coverage data to Coveralls env: COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} COVERALLS_FLAG_NAME: Scala ${{ matrix.scala }} + shell: bash run: sbt '++ ${{ matrix.scala }}' coverageReport coverageAggregate coveralls - name: Compress target directories + shell: bash run: tar cf targets.tar target support/stream-circe/target http-json/target tests/target stream-json/target support/http-circe/target project/target - name: Upload target directories - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: target-${{ matrix.os }}-${{ matrix.scala }}-${{ matrix.java }} path: targets.tar @@ -91,6 +109,18 @@ jobs: java: [temurin@8] runs-on: ${{ matrix.os }} steps: + - name: Ignore line ending differences in git + if: contains(runner.os, 'windows') + run: git config --global core.autocrlf false + + - name: Configure pagefile for Windows + if: contains(runner.os, 'windows') + uses: al-cheb/configure-pagefile-action@v1.3 + with: + minimum-size: 2GB + maximum-size: 8GB + disk-root: 'C:' + - name: Checkout current branch (full) uses: actions/checkout@v4 with: @@ -98,7 +128,7 @@ jobs: - name: Setup Java (temurin@8) if: matrix.java == 'temurin@8' - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: temurin java-version: 8 @@ -106,7 +136,7 @@ jobs: - name: Setup Java (temurin@11) if: matrix.java == 'temurin@11' - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: temurin java-version: 11 @@ -114,14 +144,14 @@ jobs: - name: Setup Java (temurin@17) if: matrix.java == 'temurin@17' - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 cache: sbt - name: Download target directories (2.12.18) - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: target-${{ matrix.os }}-2.12.18-${{ matrix.java }} @@ -131,7 +161,7 @@ jobs: rm targets.tar - name: Download target directories (2.13.12) - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: target-${{ matrix.os }}-2.13.12-${{ matrix.java }} @@ -141,7 +171,7 @@ jobs: rm targets.tar - name: Download target directories (3.3.1) - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: target-${{ matrix.os }}-3.3.1-${{ matrix.java }} diff --git a/build.sbt b/build.sbt index 6badefa..841f7b0 100644 --- a/build.sbt +++ b/build.sbt @@ -205,3 +205,5 @@ ThisBuild / githubWorkflowJavaVersions := List( JavaSpec.temurin("11"), JavaSpec.temurin("17") ) + +ThisBuild / githubWorkflowOSes += "windows-latest" diff --git a/project/plugins.sbt b/project/plugins.sbt index 56b5417..b0f2e64 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -6,4 +6,4 @@ addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2 addSbtPlugin("org.scoverage" % "sbt-scoverage" % "2.0.9") addSbtPlugin("org.scoverage" % "sbt-coveralls" % "1.3.11") addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.3") -addSbtPlugin("com.github.sbt" % "sbt-github-actions" % "0.19.0") +addSbtPlugin("com.github.sbt" % "sbt-github-actions" % "0.22.0")