Skip to content

Merge pull request #1009 from bloomberg/dependabot/github_actions/git… #3798

Merge pull request #1009 from bloomberg/dependabot/github_actions/git…

Merge pull request #1009 from bloomberg/dependabot/github_actions/git… #3798

name: 'Continuous Integration'
on: [pull_request, push]
permissions: read-all
jobs:
build-native-jars:
name: 'Build Native JARs / ${{ matrix.display }}'
strategy:
matrix:
include:
- display: 'linux-amd64 (vec1+avx2)'
os: ubuntu-latest
platform: linux-amd64
container: registry.access.redhat.com/ubi8/ubi:latest
shell: bash
vec1_enabled: 'ON'
vec1_x86_avx2: 'ON'
- display: 'linux-aarch64 (vec1)'
os: ubuntu-24.04-arm
platform: linux-aarch64
container: registry.access.redhat.com/ubi8/ubi:latest
shell: bash
vec1_enabled: 'ON'
vec1_x86_avx2: 'OFF'
- display: 'linux-amd64-musl (vec1+avx2)'
os: ubuntu-latest
platform: linux-amd64-musl
container: alpine:3.20
shell: sh
vec1_enabled: 'ON'
vec1_x86_avx2: 'ON'
- display: 'darwin-aarch64 (vec1)'
os: macos-15
platform: darwin-aarch64
shell: bash
vec1_enabled: 'ON'
vec1_x86_avx2: 'OFF'
- display: 'windows-amd64 (vec1+avx2)'
os: windows-latest
platform: windows-amd64
shell: bash
vec1_enabled: 'ON'
vec1_x86_avx2: 'ON'
- display: 'windows-aarch64 (vec1)'
os: windows-11-arm
platform: windows-aarch64
shell: bash
vec1_enabled: 'ON'
vec1_x86_avx2: 'OFF'
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
defaults:
run:
shell: ${{ matrix.shell }}
timeout-minutes: 60
env:
SELEKT_LIBC: ${{ contains(matrix.platform, 'musl') && 'musl' || '' }}
steps:
- name: 'Install system packages'
shell: sh
run: |
if [ "${{ runner.os }}" = "Linux" ]; then
if command -v apk > /dev/null 2>&1; then
apk update
apk add --no-cache bash git gcc g++ musl-dev make curl tar sed gnupg file perl linux-headers cmake diffutils tcl unzip openjdk17
else
dnf update -y
dnf install -y git gcc gcc-c++ libstdc++-static glibc-devel make curl tar sed bash gnupg file perl kernel-headers cmake diffutils tcl unzip
fi
elif [ "${{ runner.os }}" = "macOS" ]; then
brew install make tcl-tk
elif [ "${{ runner.os }}" = "Windows" ]; then
if [ "${{ runner.arch }}" = "ARM64" ]; then
choco install ninja magicsplat-tcl-tk -y --no-progress
else
choco install mingw make magicsplat-tcl-tk -y --no-progress
fi
fi
- name: 'Configure Windows Perl'
if: runner.os == 'Windows' && runner.arch != 'ARM64'
shell: cmd
run: |
C:\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -S perl make"
C:\msys64\usr\bin\bash.exe -lc "echo | cpan Locale::Maketext::Simple Pod::Usage"
C:\msys64\usr\bin\bash.exe -lc "perl -e 'use Locale::Maketext::Simple; use Pod::Usage; print qq{OK\n}'"
- name: 'Configure Windows ARM64 Perl'
if: runner.os == 'Windows' && runner.arch == 'ARM64'
shell: pwsh
run: |
choco install strawberryperl -y --no-progress
$strawberry = 'C:\Strawberry\perl\bin'
$strawberryC = 'C:\Strawberry\c\bin'
$strawberrySite = 'C:\Strawberry\perl\site\bin'
if (-not (Test-Path "$strawberry\perl.exe")) {
throw "Strawberry Perl install missing: $strawberry\perl.exe not found"
}
Add-Content -Path $env:GITHUB_PATH -Value $strawberry
Add-Content -Path $env:GITHUB_PATH -Value $strawberryC
Add-Content -Path $env:GITHUB_PATH -Value $strawberrySite
& "$strawberry\perl.exe" -e "use Locale::Maketext::Simple; use Pod::Usage; print qq{OK\n}"
- name: 'Setup MSVC'
if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ runner.arch == 'ARM64' && 'arm64' || 'amd64' }}
- name: 'Cache mimalloc'
id: cache-mimalloc
if: runner.os == 'Linux'
uses: actions/cache@v6
with:
path: |
/usr/local/lib/libmimalloc.a
/usr/local/include/mimalloc.h
key: mimalloc-${{ matrix.platform }}-v3.3.2
- name: 'Build mimalloc'
if: runner.os == 'Linux' && steps.cache-mimalloc.outputs.cache-hit != 'true'
run: |
cd /tmp
curl -L https://github.com/microsoft/mimalloc/archive/refs/tags/v3.3.2.tar.gz -o mimalloc.tar.gz
tar xzf mimalloc.tar.gz
cd mimalloc-3.3.2
mkdir -p out/release
cd out/release
cmake ../.. -DCMAKE_BUILD_TYPE=Release -DMI_BUILD_SHARED=OFF -DMI_BUILD_STATIC=ON -DMI_BUILD_TESTS=OFF -DMI_LOCAL_DYNAMIC_TLS=ON
make -j$(nproc) mimalloc-static
SUDO=""
if [ "$(id -u)" != "0" ] && command -v sudo >/dev/null 2>&1; then
SUDO="sudo"
fi
$SUDO mkdir -p /usr/local/lib /usr/local/include
STATIC_LIB=""
for candidate in libmimalloc.a libmimalloc-static.a; do
if [ -f "$candidate" ]; then STATIC_LIB="$candidate"; break; fi
done
if [ -z "$STATIC_LIB" ]; then
echo "ERROR: no mimalloc static lib produced. Build dir contents:"
ls -la
exit 1
fi
echo "Installing $STATIC_LIB -> /usr/local/lib/libmimalloc.a"
$SUDO cp "$STATIC_LIB" /usr/local/lib/libmimalloc.a
$SUDO cp ../../include/mimalloc.h /usr/local/include/mimalloc.h
- name: 'Setup Java 17'
id: setup-java-17
if: "!contains(matrix.platform, 'musl')"
uses: actions/setup-java@v5
with:
distribution: ${{ (runner.os == 'Windows' && runner.arch == 'ARM64') && 'microsoft' || 'temurin' }}
java-version: 17
- name: 'Set JAVA_HOME'
run: |
if [ "${{ runner.os }}" = "Linux" ]; then
if command -v apk > /dev/null 2>&1; then
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> $GITHUB_ENV
elif [ "$(uname -m)" = "aarch64" ]; then
echo "JAVA_HOME=$JAVA_HOME_17_ARM64" >> $GITHUB_ENV
else
echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV
fi
elif [ "${{ runner.os }}" = "macOS" ]; then
echo "JAVA_HOME=$(/usr/libexec/java_home -v 17)" >> $GITHUB_ENV
elif [ "${{ runner.os }}" = "Windows" ]; then
if [ "${{ runner.arch }}" = "ARM64" ]; then
echo "JAVA_HOME=${JAVA_HOME//\\//}" >> $GITHUB_ENV
else
echo "JAVA_HOME=${JAVA_HOME_17_X64//\\//}" >> $GITHUB_ENV
fi
fi
- name: 'Setup Android SDK'
if: "!contains(matrix.platform, 'linux-aarch64') && !contains(matrix.platform, 'musl') && matrix.platform != 'windows-aarch64'"
uses: android-actions/setup-android@v4
- name: 'Setup Android SDK (aarch64)'
if: matrix.platform == 'linux-aarch64'
run: |
mkdir -p "$HOME/.android/sdk/cmdline-tools"
curl -fsSL https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -o /tmp/cmdline-tools.zip
unzip -q /tmp/cmdline-tools.zip -d "$HOME/.android/sdk/cmdline-tools"
mv "$HOME/.android/sdk/cmdline-tools/cmdline-tools" "$HOME/.android/sdk/cmdline-tools/latest"
yes | "$HOME/.android/sdk/cmdline-tools/latest/bin/sdkmanager" --licenses > /dev/null 2>&1 || true
echo "ANDROID_HOME=$HOME/.android/sdk" >> $GITHUB_ENV
echo "ANDROID_SDK_ROOT=$HOME/.android/sdk" >> $GITHUB_ENV
- name: 'Setup Android SDK (musl)'
if: contains(matrix.platform, 'musl')
run: |
mkdir -p "$HOME/.android/sdk/platforms" "$HOME/.android/sdk/build-tools" "$HOME/.android/sdk/licenses"
echo "" > "$HOME/.android/sdk/licenses/android-sdk-license"
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> "$HOME/.android/sdk/licenses/android-sdk-license"
echo "" > "$HOME/.android/sdk/licenses/android-sdk-preview-license"
echo "84831b9409646a918e30573bab4c9c91346d8abd" >> "$HOME/.android/sdk/licenses/android-sdk-preview-license"
echo "" > "$HOME/.android/sdk/licenses/android-sdk-arm-dbt-license"
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> "$HOME/.android/sdk/licenses/android-sdk-arm-dbt-license"
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> "$HOME/.android/sdk/licenses/android-sdk-arm-dbt-license"
echo "ANDROID_HOME=$HOME/.android/sdk" >> $GITHUB_ENV
echo "ANDROID_SDK_ROOT=$HOME/.android/sdk" >> $GITHUB_ENV
- name: 'Setup Android SDK (windows-aarch64 stub)'
if: matrix.platform == 'windows-aarch64'
shell: bash
run: |
SDK_DIR="$USERPROFILE/.android/sdk"
SDK_DIR_UNIX=$(echo "$SDK_DIR" | sed 's#\\#/#g')
mkdir -p "$SDK_DIR_UNIX/platforms" "$SDK_DIR_UNIX/build-tools" "$SDK_DIR_UNIX/licenses"
{
echo ""
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee"
} > "$SDK_DIR_UNIX/licenses/android-sdk-license"
{
echo ""
echo "84831b9409646a918e30573bab4c9c91346d8abd"
} > "$SDK_DIR_UNIX/licenses/android-sdk-preview-license"
{
echo ""
echo "d56f5187479451eabf01fb78af6dfcb131a6481e"
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee"
} > "$SDK_DIR_UNIX/licenses/android-sdk-arm-dbt-license"
echo "ANDROID_HOME=$SDK_DIR_UNIX" >> $GITHUB_ENV
echo "ANDROID_SDK_ROOT=$SDK_DIR_UNIX" >> $GITHUB_ENV
- name: 'Checkout'
uses: actions/checkout@v7
with:
fetch-depth: 2
submodules: recursive
- name: 'Configure Git'
if: runner.os == 'Linux'
run: |
git config --global --add safe.directory /__w/selekt/selekt
- name: 'Cache OpenSSL'
uses: actions/cache@v6
with:
path: OpenSSL/build
key: openssl-${{ matrix.platform }}-${{ hashFiles('OpenSSL/openssl.properties', 'OpenSSL/build.gradle.kts', 'OpenSSL/build_libraries.sh') }}
- name: 'SQLCipher amalgamation cache'
uses: actions/cache@v6
with:
path: |
SQLite3/sqlite3/generated/cpp/sqlite3.c
SQLite3/sqlite3/generated/include/sqlite3/sqlite3.h
SQLite3/src/main/external/sqlcipher/sqlite3.c
SQLite3/src/main/external/sqlcipher/sqlite3.h
key: sqlcipher-amalgamation-${{ matrix.platform }}-${{ hashFiles('SQLite3/src/main/external/sqlcipher/src/**', 'SQLite3/src/main/external/sqlcipher/VERSION') }}
- name: 'Configure Gradle'
run: |
echo 'org.gradle.caching=false' >> gradle.properties
echo 'org.gradle.configuration-cache=false' >> gradle.properties
echo "org.gradle.java.home=${JAVA_HOME}" >> gradle.properties
- name: 'Build'
env:
LDFLAGS: '-s'
MACOSX_DEPLOYMENT_TARGET: ${{ runner.os == 'macOS' && '12.0' || '' }}
SELEKT_ENABLE_VEC1: ${{ matrix.vec1_enabled }}
SELEKT_VEC1_ENABLE_X86_AVX2: ${{ matrix.vec1_x86_avx2 }}
run: |
if [ "${{ runner.os }}" = "macOS" ]; then
export CC=clang
export CXX=clang++
elif [ "${{ runner.os }}" = "Linux" ]; then
export CC=gcc
export CXX=g++
elif [ "${{ runner.os }}" = "Windows" ] && [ "${{ runner.arch }}" = "ARM64" ]; then
export STRAWBERRY_PERL='C:/Strawberry/perl/bin/perl.exe'
export PATH="/c/Strawberry/perl/bin:/c/Strawberry/c/bin:/c/Strawberry/perl/site/bin:$PATH"
which perl
perl -e 'use Locale::Maketext::Simple; use Pod::Usage; print qq{Strawberry perl OK\n}'
fi
./gradlew :selekt-sqlite3-sqlcipher:jar
- name: 'Verify native library'
run: |
LIB=$(find SQLite3/build/intermediates/libs \( -name 'libselekt.*' -o -name 'selekt.dll' \) -type f | head -1)
if [ -z "$LIB" ]; then
echo "ERROR: No native library found in build output."
exit 1
fi
echo "Found native library: $LIB"
file "$LIB"
ABS_LIB=$(cd "$(dirname "$LIB")" && pwd)/$(basename "$LIB")
if [ "${{ runner.os }}" = "Windows" ]; then
echo '-- Dependent DLLs --'
if command -v objdump >/dev/null 2>&1; then
objdump -p "$LIB" | grep -i 'DLL Name' || true
elif command -v llvm-objdump >/dev/null 2>&1; then
llvm-objdump -p "$LIB" | grep -i 'DLL Name' || true
elif command -v dumpbin >/dev/null 2>&1; then
dumpbin /dependents "$LIB" || true
else
echo '(no objdump/llvm-objdump/dumpbin available)'
fi
echo '--'
fi
cat > /tmp/LoadTest.java << 'JAVA'
public class LoadTest {
public static void main(String[] args) {
System.load(args[0]);
System.out.println("OK: Native library loaded successfully.");
}
}
JAVA
if [ "${{ runner.os }}" = "Windows" ]; then
SAFE_PATH='C:\Windows\System32;C:\Windows;C:\Windows\System32\Wbem'
JAVA_BIN="$JAVA_HOME/bin/java"
echo "Loading with sanitised child PATH=$SAFE_PATH"
echo "Using java: $JAVA_BIN"
PATH="$SAFE_PATH" "$JAVA_BIN" /tmp/LoadTest.java "$ABS_LIB"
else
java /tmp/LoadTest.java "$ABS_LIB"
fi
- name: 'Upload native JAR'
uses: actions/upload-artifact@v7.0.1
with:
name: selekt-sqlite3-sqlcipher-${{ matrix.platform }}
path: selekt-sqlite3-sqlcipher/build/libs/*.jar
build-native-jar-musl-aarch64:
name: 'Build Native JARs / linux-aarch64-musl (vec1)'
runs-on: ubuntu-24.04-arm
timeout-minutes: 60
steps:
- name: 'Checkout'
uses: actions/checkout@v7
with:
fetch-depth: 2
submodules: recursive
- name: 'Build in Alpine container'
run: |
docker run --rm \
-v "${{ github.workspace }}:/workspace" \
-w /workspace \
-e SELEKT_LIBC=musl \
-e SELEKT_ENABLE_VEC1=ON \
-e SELEKT_VEC1_ENABLE_X86_AVX2=OFF \
-e CC=gcc \
-e CXX=g++ \
-e LDFLAGS='-s' \
alpine:3.20 sh -c '
set -e
apk update
apk add --no-cache bash git gcc g++ musl-dev make curl tar sed gnupg file perl linux-headers cmake diffutils tcl unzip openjdk17
# Build mimalloc
cd /tmp
curl -L https://github.com/microsoft/mimalloc/archive/refs/tags/v3.3.2.tar.gz -o mimalloc.tar.gz
tar xzf mimalloc.tar.gz
cd mimalloc-3.3.2
mkdir -p out/release
cd out/release
cmake ../.. -DCMAKE_BUILD_TYPE=Release -DMI_BUILD_SHARED=OFF -DMI_BUILD_STATIC=ON -DMI_BUILD_TESTS=OFF -DMI_LOCAL_DYNAMIC_TLS=ON
make -j$(nproc) mimalloc-static
mkdir -p /usr/local/lib /usr/local/include
STATIC_LIB=""
for candidate in libmimalloc.a libmimalloc-static.a; do
if [ -f "$candidate" ]; then STATIC_LIB="$candidate"; break; fi
done
if [ -z "$STATIC_LIB" ]; then
echo "ERROR: no mimalloc static lib produced. Build dir contents:"
ls -la
exit 1
fi
cp "$STATIC_LIB" /usr/local/lib/libmimalloc.a
cp ../../include/mimalloc.h /usr/local/include/mimalloc.h
# Configure and build
cd /workspace
git config --global --add safe.directory /workspace
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export ANDROID_HOME="$HOME/.android/sdk"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
mkdir -p "$ANDROID_HOME/platforms" "$ANDROID_HOME/build-tools" "$ANDROID_HOME/licenses"
echo "" > "$ANDROID_HOME/licenses/android-sdk-license"
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> "$ANDROID_HOME/licenses/android-sdk-license"
echo "" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
echo "84831b9409646a918e30573bab4c9c91346d8abd" >> "$ANDROID_HOME/licenses/android-sdk-preview-license"
echo "" > "$ANDROID_HOME/licenses/android-sdk-arm-dbt-license"
echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> "$ANDROID_HOME/licenses/android-sdk-arm-dbt-license"
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" >> "$ANDROID_HOME/licenses/android-sdk-arm-dbt-license"
echo "org.gradle.caching=false" >> gradle.properties
echo "org.gradle.configuration-cache=false" >> gradle.properties
echo "org.gradle.java.home=${JAVA_HOME}" >> gradle.properties
./gradlew :selekt-sqlite3-sqlcipher:jar
# Verify native library loads
LIB=$(find SQLite3/build/intermediates/libs -name "libselekt.*" -type f | head -1)
echo "Found native library: $LIB"
file "$LIB"
ABS_LIB=$(cd "$(dirname "$LIB")" && pwd)/$(basename "$LIB")
cat > /tmp/LoadTest.java << 'JAVA'
public class LoadTest {
public static void main(String[] args) {
System.load(args[0]);
System.out.println("OK: Native library loaded successfully.");
}
}
JAVA
java /tmp/LoadTest.java "$ABS_LIB"
'
- name: 'Upload native JAR'
uses: actions/upload-artifact@v7.0.1
with:
name: selekt-sqlite3-sqlcipher-linux-aarch64-musl
path: selekt-sqlite3-sqlcipher/build/libs/*.jar
ci-pipeline:
name: 'Continuous Integration'
runs-on: ubuntu-latest
timeout-minutes: 60
env:
SELEKT_ENABLE_VEC1: 'ON'
SELEKT_VEC1_ENABLE_X86_AVX2: 'ON'
steps:
- name: 'Setup environment'
run: |
if [[ ${GITHUB_REF} == 'refs/heads/main' ]]; then
echo 'SCAN=--scan' >> ${GITHUB_ENV}
fi
- name: 'Install system packages'
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends clang gcc make sed tcl
- name: 'Cache mimalloc'
id: cache-mimalloc
uses: actions/cache@v6
with:
path: |
/usr/local/lib/libmimalloc.a
/usr/local/include/mimalloc.h
key: mimalloc-ci-pipeline-linux-amd64-v3.3.2
- name: 'Build mimalloc'
if: steps.cache-mimalloc.outputs.cache-hit != 'true'
run: |
cd /tmp
curl -L https://github.com/microsoft/mimalloc/archive/refs/tags/v3.3.2.tar.gz -o mimalloc.tar.gz
tar xzf mimalloc.tar.gz
cd mimalloc-3.3.2
mkdir -p out/release
cd out/release
cmake ../.. -DCMAKE_BUILD_TYPE=Release -DMI_BUILD_SHARED=OFF -DMI_BUILD_STATIC=ON -DMI_BUILD_TESTS=OFF -DMI_LOCAL_DYNAMIC_TLS=ON
make -j$(nproc) mimalloc-static
sudo mkdir -p /usr/local/lib /usr/local/include
STATIC_LIB=""
for candidate in libmimalloc.a libmimalloc-static.a; do
if [ -f "$candidate" ]; then STATIC_LIB="$candidate"; break; fi
done
if [ -z "$STATIC_LIB" ]; then
echo "ERROR: no mimalloc static lib produced. Build dir contents:"
ls -la
exit 1
fi
sudo cp "$STATIC_LIB" /usr/local/lib/libmimalloc.a
sudo cp ../../include/mimalloc.h /usr/local/include/mimalloc.h
- name: 'Checkout'
uses: actions/checkout@v7
with:
fetch-depth: 2
submodules: recursive
- name: 'Setup Java 17'
id: setup-java-17
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 17
- name: 'Setup Java 25'
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 25
- name: 'Set JAVA_HOME'
run: |
if [[ "${{ runner.os }}" == "Linux" ]]; then
echo "JAVA_HOME=$JAVA_HOME_17_X64" >> $GITHUB_ENV
elif [[ "${{ runner.os }}" == "macOS" ]]; then
echo "JAVA_HOME=$(/usr/libexec/java_home -v 17)" >> $GITHUB_ENV
fi
- name: 'Gradle cache'
uses: actions/cache@v6
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: 'Cache OpenSSL'
uses: actions/cache@v6
with:
path: OpenSSL/build
key: openssl-ci-${{ runner.os }}-${{ hashFiles('OpenSSL/openssl.properties', 'OpenSSL/build.gradle.kts', 'OpenSSL/build_libraries.sh') }}
- name: 'ccache'
uses: hendrikmuhs/ccache-action@v1.2
- name: 'Configure Gradle'
run: |
echo 'org.gradle.caching=true' >> gradle.properties
echo "org.gradle.java.home=${JAVA_HOME}" >> gradle.properties
echo 'plugins {' >> settings.gradle.kts
echo ' id("com.gradle.enterprise").version("3.6.3")' >> settings.gradle.kts
echo '}' >> settings.gradle.kts
echo 'gradleEnterprise {' >> settings.gradle.kts
echo ' buildScan {' >> settings.gradle.kts
echo ' termsOfServiceUrl = "https://gradle.com/terms-of-service"' >> settings.gradle.kts
echo ' termsOfServiceAgree = "yes"' >> settings.gradle.kts
echo ' }' >> settings.gradle.kts
echo '}' >> settings.gradle.kts
- name: 'Licenses'
run: ./gradlew licensee --no-configuration-cache
- name: 'Analyse'
run: ./gradlew detekt lint -x lintRelease ${{ env.SCAN }}
- name: 'Archive analysis reports'
uses: actions/upload-artifact@v7.0.1
if: always()
with:
name: 'Analyses'
path: |
**/build/reports/detekt
- name: 'Unit tests'
run: ./gradlew :selekt-android:testDebugUnitTest :selekt-java:test :selekt-jdbc:test :selekt-sqlite3-classes:testJava17 :selekt-sqlite3-classes:testJava25 :selekt-common:test :koverHtmlReport -x integrationTest ${{ env.SCAN }}
- name: 'Archive test reports'
uses: actions/upload-artifact@v7.0.1
if: always()
with:
name: 'Unit test and coverage reports'
path: |
build/reports/kover/html
selekt-android/build/reports/tests/testDebugUnitTest
selekt-java/build/reports/tests/test
selekt-jdbc/build/reports/tests/test
selekt-sqlite3-classes/build/reports/tests/testJava17
selekt-sqlite3-classes/build/reports/tests/testJava25
- name: 'Build Selekt Android'
run: |
./gradlew assembleRelease ${{ env.SCAN }}
- name: 'Build Selekt JVM'
run: |
./gradlew :selekt-jdbc:jar :selekt-jvm:jar ${{ env.SCAN }}
- name: 'Verify coverage'
run:
./gradlew :koverVerify -x integrationTest
- name: 'Build others'
run: |
./gradlew assembleAndroidTest :AndroidCLI:assembleDebug :selekt-android-lint:assemble dokkaGenerate
- name: 'Tear down'
if: always()
run: |
./gradlew --stop