Files
sbt/.github/workflows/client-test.yml
T
2026-07-22 23:57:13 -04:00

117 lines
4.5 KiB
YAML

name: Client Test
on:
pull_request:
push:
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
test:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
java: 17
distribution: zulu
- os: macos-latest
java: 17
distribution: temurin
- os: windows-latest
java: 17
distribution: zulu
runs-on: ${{ matrix.os }}
env:
JAVA_OPTS: -Xms800M -Xmx2G -Xss6M -XX:ReservedCodeCacheSize=128M -server -Dsbt.io.virtual=false -Dfile.encoding=UTF-8
JVM_OPTS: -Xms800M -Xmx2G -Xss6M -XX:ReservedCodeCacheSize=128M -server -Dsbt.io.virtual=false -Dfile.encoding=UTF-8
SBT_ETC_FILE: $HOME/etc/sbt/sbtopts
TEST_SBT_VER: 1.11.4
steps:
- uses: actions/checkout@v7
- name: Setup JDK
uses: actions/setup-java@v5
with:
distribution: "zulu"
java-version: |
25
17
cache: sbt
- uses: sbt/setup-sbt@v1
with:
disk-cache: false
- name: Set up Python 3.12
uses: actions/setup-python@v7
with:
python-version: 3.12
- name: Setup Windows C++ toolchain
uses: ilammy/msvc-dev-cmd@v1
if: ${{ matrix.os == 'windows-latest' }}
- name: Client test (Linux)
if: ${{ matrix.os == 'ubuntu-latest' }}
shell: bash
run: |
# test building sbtn on Linux (sbtw native-image dropped: scopt lazy vals break under Graal)
sbt "-Dsbt.io.virtual=false" nativeImage
# smoke test native Image
./target/out/jvm/u/sbt-client/bin/sbtn --sbt-script=$(pwd)/sbt about
./target/out/jvm/u/sbt-client/bin/sbtn --sbt-script=$(pwd)/sbt shutdown
# test launcher script
echo build using JDK 17 test using JDK 17 and JDK 25
sbt --server -Dsbt.build.version=$TEST_SBT_VER launcherPackage/Rpm/packageBin launcherPackage/Debian/packageBin
sbt -Dsbt.build.version=$TEST_SBT_VER launcherPackageIntegrationTest/test
cd launcher-package/citest && ./test.sh
JAVA_HOME="$JAVA_HOME_25_X64"
PATH="$JAVA_HOME_25_X64/bin:$PATH"
java -Xmx32m -version
./test.sh
- name: Client test (macOS)
if: ${{ matrix.os == 'macos-latest' }}
shell: bash
run: |
# test building sbtn on macOS (sbtw native-image dropped: scopt lazy vals break under Graal)
./sbt "-Dsbt.io.virtual=false" nativeImage
# test launcher script
launcher-package/bin/coursier resolve
sbt -Dsbt.build.version=$TEST_SBT_VER launcherPackageIntegrationTest/test
# This fails due to the JLine issue
# cd launcher-package/citest && ./test.sh
- name: build image (Windows)
if: ${{ matrix.os == 'windows-latest' }}
uses: nick-fields/retry@ad984534de44a9489a53aefd81eb77f87c70dc60 # v4.0.0
with:
timeout_minutes: 10
max_attempts: 3
shell: bash
command: |
# test building sbtn on Windows (sbtw native-image dropped: scopt lazy vals break under Graal)
sbt "-Dsbt.io.virtual=false" nativeImage
- name: sbtn test (Windows)
if: ${{ matrix.os == 'windows-latest' }}
shell: bash
run: |
REPO_ROOT=$(pwd)
set -o xtrace
# smoke test native Image (sbtn)
$REPO_ROOT/target/out/jvm/u/sbt-client/bin/sbtn --sbt-script=$REPO_ROOT/launcher-package/src/universal/bin/sbt.bat about
$REPO_ROOT/target/out/jvm/u/sbt-client/bin/sbtn --sbt-script=$REPO_ROOT/launcher-package/src/universal/bin/sbt.bat shutdown
pushd launcher-package/citest
# smoke test native Image (sbtn) against sbt 1.x build
$REPO_ROOT/target/out/jvm/u/sbt-client/bin/sbtn --sbt-script=$REPO_ROOT/launcher-package/src/universal/bin/sbt.bat about > out.txt
grep -q "Available Plugins" out.txt
$REPO_ROOT/target/out/jvm/u/sbt-client/bin/sbtn --sbt-script=$REPO_ROOT/launcher-package/src/universal/bin/sbt.bat shutdown
popd
- name: Client test (Windows)
if: ${{ matrix.os == 'windows-latest' }}
shell: bash
run: |
# test launcher script
echo build using JDK 17 test using JDK 17 and JDK 25
launcher-package/bin/coursier.bat resolve
sbt -Dsbt.build.version=$TEST_SBT_VER launcherPackageIntegrationTest/test
# integration tests with sbtw as drop-in for sbt.bat (JVM runner)
sbt -Dsbt.build.version=$TEST_SBT_VER -Dsbt.test.useSbtw=true launcherPackageIntegrationTest/test
cd launcher-package/citest
./test.bat
test3/test3.bat