mirror of https://github.com/sbt/sbt.git
249 lines
8.8 KiB
YAML
249 lines
8.8 KiB
YAML
name: CI
|
|
on:
|
|
pull_request:
|
|
push:
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
|
|
jobs:
|
|
test:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- os: ubuntu-20.04
|
|
java: 21
|
|
distribution: temurin
|
|
jobtype: 1
|
|
- os: ubuntu-latest
|
|
java: 21
|
|
distribution: temurin
|
|
jobtype: 2
|
|
- os: ubuntu-latest
|
|
java: 21
|
|
distribution: temurin
|
|
jobtype: 3
|
|
- os: ubuntu-latest
|
|
java: 21
|
|
distribution: temurin
|
|
jobtype: 4
|
|
- os: ubuntu-latest
|
|
java: 21
|
|
distribution: temurin
|
|
jobtype: 5
|
|
- os: ubuntu-latest
|
|
java: 8
|
|
distribution: zulu
|
|
jobtype: 6
|
|
- os: ubuntu-latest
|
|
java: 8
|
|
distribution: zulu
|
|
jobtype: 7
|
|
- os: macos-latest
|
|
java: 17
|
|
distribution: temurin
|
|
jobtype: 8
|
|
- os: windows-latest
|
|
java: 8
|
|
distribution: zulu
|
|
jobtype: 9
|
|
- os: ubuntu-latest
|
|
java: 11
|
|
distribution: temurin
|
|
jobtype: 10
|
|
- os: ubuntu-latest
|
|
java: 11
|
|
distribution: temurin
|
|
jobtype: 11
|
|
- os: windows-latest
|
|
java: 11
|
|
distribution: temurin
|
|
jobtype: 10
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 25
|
|
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
|
|
UTIL_TESTS: "utilControl/test utilInterface/test utilLogging/test utilPosition/test utilRelation/test utilScripted/test"
|
|
SBT_LOCAL: false
|
|
TEST_SBT_VER: 1.5.0
|
|
SBT_ETC_FILE: $HOME/etc/sbt/sbtopts
|
|
JDK11: adopt@1.11.0-9
|
|
SPARK_LOCAL_IP: "127.0.0.1"
|
|
steps:
|
|
- name: Don't convert LF to CRLF during checkout
|
|
if: runner.os == 'Windows'
|
|
run: |
|
|
git config --global core.autocrlf false
|
|
git config --global core.eol lf
|
|
- name: Checkout sbt/sbt
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: true
|
|
- name: Checkout sbt/io
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: sbt/io
|
|
ref: develop
|
|
path: io
|
|
- name: Checkout sbt/zinc
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: sbt/zinc
|
|
ref: develop
|
|
path: zinc
|
|
- name: Setup JDK
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: "${{ matrix.distribution }}"
|
|
java-version: "${{ matrix.java }}"
|
|
- name: Setup sbt
|
|
uses: sbt/setup-sbt@v1
|
|
- name: Set up Python 3.12
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: 3.12
|
|
- name: Coursier cache
|
|
uses: coursier/cache-action@v6
|
|
# - name: Cache sbt
|
|
# uses: actions/cache@v3
|
|
# with:
|
|
# path: ~/.sbt
|
|
# key: ${{ runner.os }}-sbt-cache-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }}
|
|
- name: Setup Windows C++ toolchain
|
|
uses: ilammy/msvc-dev-cmd@v1
|
|
if: ${{ matrix.os == 'windows-2019' }}
|
|
- name: Pre-test cleanup
|
|
shell: bash
|
|
run: |
|
|
rm -rf "$HOME/.sbt/scripted/" || true
|
|
rm -rf "$HOME/.ivy2/local" || true
|
|
rm -r $(find $HOME/.sbt/boot -name "*-SNAPSHOT") || true
|
|
- name: Publish local Zinc
|
|
if: ${{ matrix.jobtype == 6 }}
|
|
shell: bash
|
|
run: |
|
|
./sbt -v lowerUtils/publishLocal
|
|
cd zinc/
|
|
sbt publishLocal
|
|
- name: Build and test (1)
|
|
if: ${{ matrix.jobtype == 1 }}
|
|
shell: bash
|
|
run: |
|
|
rm -rf "$HOME/.sbt/boot/" || true
|
|
# ./sbt -v --client mimaReportBinaryIssues
|
|
./sbt -v --client javafmtCheck
|
|
./sbt -v --client "Test/javafmtCheck"
|
|
./sbt -v --client scalafmtCheckAll
|
|
./sbt -v --client scalafmtSbtCheck
|
|
./sbt -v --client serverTestProj/scalafmtCheckAll
|
|
# ./sbt -v --client headerCheck
|
|
# ./sbt -v --client "Test/headerCheck"
|
|
./sbt -v --client "Test/compile"
|
|
./sbt -v --client publishLocal
|
|
./sbt -v --client test
|
|
./sbt -v --client "serverTestProj/test"
|
|
# ./sbt -v --client doc
|
|
./sbt -v --client "all $UTIL_TESTS"
|
|
- name: Build and test (2)
|
|
if: ${{ matrix.jobtype == 2 }}
|
|
shell: bash
|
|
run: |
|
|
./sbt -v "scripted actions/* apiinfo/* cache/* compiler-project/* ivy-deps-management/* reporter/* tests/* classloader-cache/* package/*"
|
|
# ./sbt -v "scripted watch/*"
|
|
- name: Build and test (3)
|
|
if: ${{ matrix.jobtype == 3 }}
|
|
shell: bash
|
|
run: |
|
|
# ./sbt -v "dependencyTreeProj/publishLocal; scripted dependency-graph/*"
|
|
./sbt -v --client "scripted dependency-management/* project-load/* project-matrix/* java/* run/*"
|
|
# ./sbt -v --client "scripted plugins/*"
|
|
# ./sbt -v --client "scripted nio/*"
|
|
- name: Build and test (4)
|
|
if: ${{ matrix.jobtype == 4 }}
|
|
shell: bash
|
|
run: |
|
|
# ./sbt -v "repoOverrideTest:scripted dependency-management/*"
|
|
./sbt -v "scripted source-dependencies/*"
|
|
# ./sbt -v "scripted project/*"
|
|
- name: Build and test (5)
|
|
if: ${{ matrix.jobtype == 5 }}
|
|
shell: bash
|
|
run: |
|
|
./sbt -v --client test
|
|
# - name: Build and test (6)
|
|
# if: ${{ matrix.jobtype == 6 }}
|
|
# shell: bash
|
|
# run: |
|
|
# # build from fresh IO, LM, and Zinc
|
|
# BUILD_VERSION="1.5.0-SNAPSHOT"
|
|
# cd io
|
|
# sbt -v -Dsbt.build.version=${BUILD_VERSION} +publishLocal
|
|
# cd ../
|
|
# sbt -Dsbtzinc.path=$HOME/work/sbt/sbt/zinc -Dsbt.build.version=$BUILD_VERSION -Dsbt.build.fatal=false "+lowerUtils/publishLocal; {zinc}/publishLocal; upperModules/publishLocal"
|
|
# rm -r $(find $HOME/.sbt/boot -name "*-SNAPSHOT") || true
|
|
# sbt -v -Dsbt.version=$BUILD_VERSION "++$SCALA_213; all $UTIL_TESTS; ++$SCALA_212; all $UTIL_TESTS; scripted actions/* source-dependencies/*1of3 dependency-management/*1of4 java/*"
|
|
- name: Build and test (7)
|
|
if: ${{ matrix.jobtype == 7 }}
|
|
shell: bash
|
|
run: |
|
|
# test building sbtn on Linux
|
|
sbt "-Dsbt.io.virtual=false" nativeImage
|
|
# test launcher script
|
|
echo build using JDK 8 test using JDK 8 and JDK 11
|
|
cd launcher-package
|
|
sbt -Dsbt.build.version=$TEST_SBT_VER rpm:packageBin debian:packageBin
|
|
sbt -Dsbt.build.version=$TEST_SBT_VER integrationTest/test
|
|
cd citest && ./test.sh
|
|
$HOME/bin/jabba install $JDK11 && exec $HOME/bin/jabba which --home $JDK11
|
|
java -Xmx32m -version
|
|
./test.sh
|
|
- name: Build and test (8)
|
|
if: ${{ matrix.jobtype == 8 }}
|
|
shell: bash
|
|
run: |
|
|
# test building sbtn on macOS
|
|
./sbt "-Dsbt.io.virtual=false" nativeImage
|
|
# test launcher script
|
|
cd launcher-package
|
|
bin/coursier resolve
|
|
../sbt -Dsbt.build.version=$TEST_SBT_VER integrationTest/test
|
|
# This fails due to the JLine issue
|
|
# cd citest && ./test.sh
|
|
- name: Build and test (9)
|
|
if: ${{ matrix.jobtype == 9 }}
|
|
shell: bash
|
|
run: |
|
|
# test building sbtn on Windows
|
|
sbt "-Dsbt.io.virtual=false" nativeImage
|
|
# test launcher script
|
|
echo build using JDK 8, test using JDK 8, on Windows
|
|
cd launcher-package
|
|
bin/coursier.bat resolve
|
|
sbt -Dsbt.build.version=$TEST_SBT_VER integrationTest/test
|
|
cd citest
|
|
./test.bat
|
|
test3/test3.bat
|
|
- name: Build and test lm-coursier (10)
|
|
if: ${{ matrix.jobtype == 10 }}
|
|
shell: bash
|
|
run: scripts/lm-coursier-ci.sh
|
|
- name: Build and test contraband
|
|
if: ${{ matrix.jobtype == 11 }}
|
|
shell: bash
|
|
run: |
|
|
sbt generateContrabands
|
|
git diff --exit-code
|
|
- name: Cleanup
|
|
shell: bash
|
|
run: |
|
|
rm -rf "$HOME/.sbt/scripted/" || true
|
|
rm -rf "$HOME/.ivy2/local" || true
|
|
rm -r $(find $HOME/.sbt/boot -name "*-SNAPSHOT") || true
|
|
find $HOME/Library/Caches/Coursier/v1 -name "ivydata-*.properties" -delete || true
|
|
find $HOME/.ivy2/cache -name "ivydata-*.properties" -delete || true
|
|
find $HOME/.cache/coursier/v1 -name "ivydata-*.properties" -delete || true
|
|
find $HOME/.sbt -name "*.lock" -delete || true
|