# This yaml shares the build bridge steps with ci and nightly. name: Build flutter-rust-bridge # 2023-11-23 18:00:00+00:00 on: workflow_call: env: FLUTTER_VERSION: "3.16.9" FLUTTER_RUST_BRIDGE_VERSION: "1.80.1" RUST_VERSION: "1.75" # https://github.com/rustdesk/rustdesk/discussions/7503 jobs: generate_bridge: runs-on: ${{ matrix.job.os }} strategy: fail-fast: false matrix: job: - { target: x86_64-unknown-linux-gnu, os: ubuntu-20.04, extra-build-args: "", } steps: - name: Checkout source code uses: actions/checkout@v4 - name: Install prerequisites run: | sudo apt-get install ca-certificates -y sudo apt-get update -y sudo apt-get install -y \ clang \ cmake \ curl \ gcc \ git \ g++ \ libclang-10-dev \ libgtk-3-dev \ llvm-10-dev \ nasm \ ninja-build \ pkg-config \ wget - name: Install Rust toolchain uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ env.RUST_VERSION }} targets: ${{ matrix.job.target }} components: "rustfmt" - uses: Swatinem/rust-cache@v2 with: prefix-key: bridge-${{ matrix.job.os }} - name: Cache Bridge id: cache-bridge uses: actions/cache@v3 with: path: /tmp/flutter_rust_bridge key: vcpkg-${{ matrix.job.arch }} - name: Install flutter uses: subosito/flutter-action@v2 with: channel: "stable" flutter-version: ${{ env.FLUTTER_VERSION }} cache: true - name: Install flutter rust bridge deps shell: bash run: | cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" pushd flutter && flutter pub get && popd - name: Run flutter rust bridge run: | ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart - name: Upload Artifact uses: actions/upload-artifact@master with: name: bridge-artifact path: | ./src/bridge_generated.rs ./src/bridge_generated.io.rs ./flutter/lib/generated_bridge.dart ./flutter/lib/generated_bridge.freezed.dart