From c7ec7944d0585d7fcd71cf5188b2ad8fa1c24ac0 Mon Sep 17 00:00:00 2001 From: Andika Tanuwijaya Date: Fri, 4 Jul 2025 20:19:14 +0700 Subject: [PATCH] gh workflow for dart (test, precompile, publish), only test is activated --- .github/workflows/dart.yml | 100 ++++++++++++++++++++++++++++ bindings/dart/cargokit_options.yaml | 8 +++ bindings/dart/rust/cargokit.yaml | 11 +++ 3 files changed, 119 insertions(+) create mode 100644 .github/workflows/dart.yml create mode 100644 bindings/dart/cargokit_options.yaml create mode 100644 bindings/dart/rust/cargokit.yaml diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml new file mode 100644 index 000000000..2fffb34e2 --- /dev/null +++ b/.github/workflows/dart.yml @@ -0,0 +1,100 @@ +name: Dart/Flutter +on: + push: + branches: + - main + tags: + - v* + pull_request: + branches: + - main +env: + working-directory: bindings/dart +jobs: + test: + defaults: + run: + working-directory: ${{ env.working-directory }} + strategy: + matrix: + os: + - blacksmith-4vcpu-ubuntu-2404 + - macos-latest + - windows-latest + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Install Rust (stable) + uses: dtolnay/rust-toolchain@stable + - name: Setup Dart + uses: dart-lang/setup-dart@v1 + - name: Install Flutter + uses: subosito/flutter-action@v2 + - name: Get flutter deps + run: flutter pub get + - name: Build test binaries + run: cargo build --package turso_dart --target-dir=rust/test_build + - name: Run tests + run: flutter test + precompile: + if: ${{ false && startsWith(github.ref, 'refs/tags/') }} + defaults: + run: + working-directory: ${{ env.working-directory }} + runs-on: ${{ matrix.os }} + permissions: + contents: write + strategy: + matrix: + os: + - blacksmith-4vcpu-ubuntu-2404 + - macOS-latest + - windows-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Install Rust (stable) + uses: dtolnay/rust-toolchain@stable + - name: Setup Dart + uses: dart-lang/setup-dart@v1 + - name: Install Flutter + uses: subosito/flutter-action@v2 + - name: Set up Android SDK + if: (matrix.os == 'ubuntu-latest') + uses: android-actions/setup-android@v2 + - name: Install specific NDK + if: (matrix.os == 'ubuntu-latest') + run: sdkmanager --install "ndk;25.1.8937393" + - name: Get flutter deps + run: flutter pub get + - name: Precompile + if: (matrix.os == 'macOS-latest') || (matrix.os == 'windows-latest') + run: dart run build_tool precompile-binaries -v --manifest-dir=../../rust --repository=dikatok/libsql_dart + working-directory: cargokit/build_tool + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PRIVATE_KEY: ${{ secrets.CARGOKIT_PRIVATE_KEY }} + - name: Precompile (with Android) + if: (matrix.os == 'ubuntu-latest') + run: dart run build_tool precompile-binaries -v --manifest-dir=../../rust --repository=dikatok/libsql_dart --android-sdk-location=/usr/local/lib/android/sdk --android-ndk-version=25.1.8937393 --android-min-sdk-version=23 + working-directory: cargokit/build_tool + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PRIVATE_KEY: ${{ secrets.CARGOKIT_PRIVATE_KEY }} + publish: + if: ${{ false && startsWith(github.ref, 'refs/tags/') }} + defaults: + run: + working-directory: ${{ env.working-directory }} + runs-on: blacksmith-4vcpu-ubuntu-2404 + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: "Publish libsql_dart" + uses: k-paxian/dart-package-publisher@v.1.6.2 + with: + accessToken: ${{ secrets.PUBDEV_ACCESS_TOKEN }} + refreshToken: ${{ secrets.PUBDEV_REFRESH_TOKEN }} + skipTests: true + force: true diff --git a/bindings/dart/cargokit_options.yaml b/bindings/dart/cargokit_options.yaml new file mode 100644 index 000000000..e98930dbe --- /dev/null +++ b/bindings/dart/cargokit_options.yaml @@ -0,0 +1,8 @@ +# Enables verbose logging of cargokit during build +verbose_logging: true + +# Opts out of using precompiled binaries. If crate has configured +# and deployed precompiled binaries, these will be by default used whenever Rustup +# is not installed. With `use_precompiled_binaries` set to false, the build will +# instead be aborted prompting user to install Rustup. +use_precompiled_binaries: true diff --git a/bindings/dart/rust/cargokit.yaml b/bindings/dart/rust/cargokit.yaml new file mode 100644 index 000000000..0cf39a6c4 --- /dev/null +++ b/bindings/dart/rust/cargokit.yaml @@ -0,0 +1,11 @@ +cargo: + debug: + toolchain: stable + release: + toolchain: stable + +precompiled_binaries: + # Uri prefix used when downloading precompiled binaries. + url_prefix: https://github.com/dikatok/libsql_dart/releases/download/v + # Public key for verifying downloaded precompiled binaries. + public_key: