Skip to content

Support sqlite3_db_config #3076

Support sqlite3_db_config

Support sqlite3_db_config #3076

name: 'Continuous Integration'
on: [pull_request, push]
permissions: read-all
jobs:
build-native-jars:
name: 'Build Native JARs'
strategy:
matrix:
include:
- os: ubuntu-latest
platform: linux-amd64
container: registry.access.redhat.com/ubi8/ubi:latest
- os: macos-15
platform: darwin-aarch64
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
timeout-minutes: 60
steps:
- name: 'Install system packages'
run: |
if [[ "${{ runner.os }}" == "Linux" ]]; then
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
elif [[ "${{ runner.os }}" == "macOS" ]]; then
brew install make tcl-tk mimalloc
fi
- name: 'Build mimalloc'
if: runner.os == 'Linux'
run: |
cd /tmp
curl -L https://github.com/microsoft/mimalloc/archive/refs/tags/v3.1.6.tar.gz -o mimalloc.tar.gz
tar xzf mimalloc.tar.gz
cd mimalloc-3.1.6
mkdir -p out/release
cd out/release
cmake ../.. -DCMAKE_BUILD_TYPE=Release -DMI_BUILD_SHARED=OFF -DMI_BUILD_STATIC=ON -DMI_BUILD_TESTS=OFF
make -j$(nproc) mimalloc-static
cp libmimalloc.a /usr/local/lib/
cp ../../include/mimalloc.h /usr/local/include/
- name: 'Setup Java 17'
id: setup-java-17
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 17
- 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: 'Setup Android SDK'
uses: android-actions/setup-android@v4
- name: 'Checkout'
uses: actions/checkout@v6
with:
fetch-depth: 2
submodules: recursive
- name: 'Configure Git'
if: runner.os == 'Linux'
run: |
git config --global --add safe.directory /__w/selekt/selekt
- 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:
CC: ${{ runner.os == 'Linux' && 'gcc' || 'clang' }}
CXX: ${{ runner.os == 'Linux' && 'g++' || 'clang++' }}
LDFLAGS: '-s'
MACOSX_DEPLOYMENT_TARGET: ${{ runner.os == 'macOS' && '12.0' || '' }}
run: |
if [[ "${{ runner.os }}" == "Linux" ]]; then
export CC=gcc
export CXX=g++
fi
./gradlew :selekt-sqlite3-sqlcipher:jar
- 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
ci-pipeline:
name: 'Continuous Integration'
runs-on: ubuntu-latest
timeout-minutes: 60
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: 'Checkout'
uses: actions/checkout@v6
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: 'Build cache'
uses: actions/cache@v5
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
~/OpenSSL/build
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- 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