Fix JNI exception class name casing, pin Rust toolchain, and remove deprecated surrealdb_unstable flag
#272
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Cross-Compile | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| inputs: | |
| run_optional_task: | |
| description: 'Publish?' | |
| required: false | |
| default: 'false' | |
| jobs: | |
| android: | |
| strategy: | |
| matrix: | |
| include: | |
| - target: x86_64-linux-android | |
| ndk: x86_64 | |
| - target: aarch64-linux-android | |
| ndk: arm64-v8a | |
| - target: i686-linux-android | |
| ndk: x86 | |
| - target: armv7-linux-androideabi | |
| ndk: armeabi-v7a | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Cache Rust | |
| uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 | |
| - name: Install dependencies | |
| run: sudo apt-get update -y | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| - name: Install cargo-ndk | |
| run: cargo install cargo-ndk | |
| - name: Build | |
| run: cargo ndk -t ${{ matrix.ndk }} build --release | |
| - name: Upload so lib | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: ${{ matrix.target }} | |
| path: target/${{ matrix.target }}/release/*.so | |
| linux: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - target: x86_64-unknown-linux-gnu | |
| linker: CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=gcc | |
| apt-get: gcc | |
| - target: aarch64-unknown-linux-gnu | |
| linker: CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc | |
| apt-get: gcc-aarch64-linux-gnu | |
| - target: i686-unknown-linux-gnu | |
| linker: CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_LINKER=gcc | |
| apt-get: gcc-multilib | |
| - target: armv7-unknown-linux-gnueabihf | |
| linker: CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc | |
| apt-get: gcc-arm-linux-gnueabihf | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Cache Rust | |
| uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ${{ matrix.apt-get }} | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable | |
| with: | |
| targets: ${{ matrix.target }} | |
| - name: Build | |
| run: | | |
| export ${{ matrix.linker }} | |
| cargo build --target ${{ matrix.target }} --release | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: ${{ matrix.target }} | |
| path: target/${{ matrix.target }}/release/*.so | |
| windows: | |
| strategy: | |
| matrix: | |
| arch: [ x86_64, i686 ] | |
| runs-on: windows-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Cache Rust | |
| uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable | |
| with: | |
| target: ${{ matrix.arch }}-pc-windows-msvc | |
| - name: Build | |
| run: cargo build --target ${{ matrix.arch }}-pc-windows-msvc --release | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: ${{ matrix.arch }}-pc-windows-msvc | |
| path: target/${{ matrix.arch }}-pc-windows-msvc/release/*.dll | |
| macos: | |
| strategy: | |
| matrix: | |
| include: | |
| - arch: x86_64 | |
| runs-on: macos-15-intel | |
| - arch: aarch64 | |
| runs-on: macos-latest | |
| runs-on: ${{ matrix.runs-on }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Cache Rust | |
| uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 | |
| - name: Set up Rust | |
| uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable | |
| - name: Build | |
| run: cargo build --target ${{ matrix.arch }}-apple-darwin --release | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: ${{ matrix.arch }}-apple-darwin | |
| path: target/${{ matrix.arch }}-apple-darwin/release/*.dylib | |
| aggregated-jar: | |
| runs-on: ubuntu-latest | |
| needs: | |
| - android | |
| - linux | |
| - windows | |
| - macos | |
| steps: | |
| - name: Install dependencies | |
| run: sudo apt-get update | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: 25 | |
| - name: Gradle | |
| run: chmod +x gradlew | |
| - name: Create directories for artifacts | |
| run: | | |
| mkdir -p src/main/resources/natives/android_64 | |
| mkdir -p src/main/resources/natives/android_32 | |
| mkdir -p src/main/resources/natives/android_arm64 | |
| mkdir -p src/main/resources/natives/android_arm32 | |
| mkdir -p src/main/resources/natives/linux_64 | |
| mkdir -p src/main/resources/natives/linux_32 | |
| mkdir -p src/main/resources/natives/linux_arm64 | |
| mkdir -p src/main/resources/natives/linux_arm32 | |
| mkdir -p src/main/resources/natives/osx_64 | |
| mkdir -p src/main/resources/natives/osx_arm64 | |
| mkdir -p src/main/resources/natives/windows_64 | |
| mkdir -p src/main/resources/natives/windows_32 | |
| - name: Download Android 64 intel | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: x86_64-linux-android | |
| path: src/main/resources/natives/android_64 | |
| - name: Download Android 32 intel | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: i686-linux-android | |
| path: src/main/resources/natives/android_32 | |
| - name: Download Android 64 arm | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: aarch64-linux-android | |
| path: src/main/resources/natives/android_arm64 | |
| - name: Download Android 32 arm | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: armv7-linux-androideabi | |
| path: src/main/resources/natives/android_arm32 | |
| - name: Download Linux 64 intel | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: x86_64-unknown-linux-gnu | |
| path: src/main/resources/natives/linux_64 | |
| - name: Download Linux 32 intel | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| continue-on-error: true | |
| with: | |
| name: i686-unknown-linux-gnu | |
| path: src/main/resources/natives/linux_32 | |
| - name: Download Linux 64 arm | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: aarch64-unknown-linux-gnu | |
| path: src/main/resources/natives/linux_arm64 | |
| - name: Download Linux 32 arm | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: armv7-unknown-linux-gnueabihf | |
| path: src/main/resources/natives/linux_arm32 | |
| - name: Download Darwin 64 intel | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: x86_64-apple-darwin | |
| path: src/main/resources/natives/osx_64 | |
| - name: Download Darwin 64 arm | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: aarch64-apple-darwin | |
| path: src/main/resources/natives/osx_arm64 | |
| - name: Download Windows 64 intel | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: x86_64-pc-windows-msvc | |
| path: src/main/resources/natives/windows_64 | |
| - name: Download Windows 32 intel | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: i686-pc-windows-msvc | |
| path: src/main/resources/natives/windows_32 | |
| - name: Extract version | |
| id: version | |
| run: echo "VERSION=$(grep '^version ' build.gradle | sed "s/version '\(.*\)'/\1/")" >> $GITHUB_OUTPUT | |
| - name: Build JAR | |
| run: ./gradlew jar | |
| - name: Upload JAR artifact | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | |
| with: | |
| name: surrealdb | |
| path: build/libs/surrealdb-${{ steps.version.outputs.VERSION }}.jar | |
| - name: Start SurrealDB | |
| uses: surrealdb/setup-surreal@7c103070ba4f544240cd287432ba70d6f50163a5 # v2 | |
| with: | |
| surrealdb_version: v3.0.4 | |
| surrealdb_port: 8000 | |
| surrealdb_auth: false | |
| surrealdb_strict: false | |
| surrealdb_log: info | |
| surrealdb_additional_args: --allow-all | |
| surrealdb_retry_count: 30 | |
| - name: Linux Integration Test | |
| run: ./gradlew -i integrationTest | |
| integration-tests: | |
| strategy: | |
| matrix: | |
| os: [ macos-14, macos-latest, windows-latest, ubuntu-latest ] | |
| runs-on: ${{ matrix.os }} | |
| needs: | |
| - aggregated-jar | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: 25 | |
| - name: Gradle | |
| run: chmod +x gradlew | |
| - name: Create directory native | |
| run: mkdir -p native | |
| - name: Download JAR | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: surrealdb | |
| path: native | |
| - name: Start SurrealDB | |
| if: runner.os != 'Windows' | |
| uses: surrealdb/setup-surreal@7c103070ba4f544240cd287432ba70d6f50163a5 # v2 | |
| with: | |
| surrealdb_version: v3.0.4 | |
| surrealdb_port: 8000 | |
| surrealdb_auth: false | |
| surrealdb_strict: false | |
| surrealdb_log: info | |
| surrealdb_additional_args: --allow-all | |
| surrealdb_retry_count: 30 | |
| - name: Tests | |
| run: ./gradlew -i integrationTest | |
| publish: | |
| needs: | |
| - aggregated-jar | |
| - integration-tests | |
| if: github.event_name == 'workflow_dispatch' && github.event.inputs.run_optional_task == 'true' | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Set up JDK | |
| uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4 | |
| with: | |
| distribution: 'temurin' | |
| java-version: 25 | |
| - name: Create directory native | |
| run: mkdir -p native | |
| - name: Download JAR | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | |
| with: | |
| name: surrealdb | |
| path: native | |
| - name: Publish Jar (Maven Central) | |
| run: | | |
| VERSION=$(grep '^version ' build.gradle | sed "s/version '\(.*\)'/\1/") | |
| if [[ "$VERSION" == *-SNAPSHOT ]]; then | |
| echo "Publishing SNAPSHOT to snapshots repository..." | |
| ./gradlew publishAggregationToCentralSnapshots | |
| else | |
| echo "Publishing release to Central Portal..." | |
| ./gradlew publishAggregationToCentralPortal | |
| fi | |
| env: | |
| MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} | |
| MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }} | |
| SIGNING_KEY: ${{ secrets.SIGNING_KEY }} | |
| SIGNING_KEY_PASS: ${{ secrets.SIGNING_KEY_PASS }} | |
| - name: Publish Jar (GitHub Packages) | |
| run: ./gradlew publishMavenJavaPublicationToGitHubPackagesRepository | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| SIGNING_KEY: ${{ secrets.SIGNING_KEY }} | |
| SIGNING_KEY_PASS: ${{ secrets.SIGNING_KEY_PASS }} |