bridge.yml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # This yaml shares the build bridge steps with ci and nightly.
  2. name: Build flutter-rust-bridge
  3. # 2023-11-23 18:00:00+00:00
  4. on:
  5. workflow_call:
  6. env:
  7. CARGO_EXPAND_VERSION: "1.0.95"
  8. FLUTTER_VERSION: "3.22.3"
  9. FLUTTER_RUST_BRIDGE_VERSION: "1.80.1"
  10. RUST_VERSION: "1.75" # https://github.com/rustdesk/rustdesk/discussions/7503
  11. jobs:
  12. generate_bridge:
  13. runs-on: ${{ matrix.job.os }}
  14. strategy:
  15. fail-fast: false
  16. matrix:
  17. job:
  18. - {
  19. target: x86_64-unknown-linux-gnu,
  20. os: ubuntu-20.04,
  21. extra-build-args: "",
  22. }
  23. steps:
  24. - name: Checkout source code
  25. uses: actions/checkout@v4
  26. with:
  27. submodules: recursive
  28. - name: Install prerequisites
  29. run: |
  30. sudo apt-get install ca-certificates -y
  31. sudo apt-get update -y
  32. sudo apt-get install -y \
  33. clang \
  34. cmake \
  35. curl \
  36. gcc \
  37. git \
  38. g++ \
  39. libclang-10-dev \
  40. libgtk-3-dev \
  41. llvm-10-dev \
  42. nasm \
  43. ninja-build \
  44. pkg-config \
  45. wget
  46. - name: Install Rust toolchain
  47. uses: dtolnay/rust-toolchain@v1
  48. with:
  49. toolchain: ${{ env.RUST_VERSION }}
  50. targets: ${{ matrix.job.target }}
  51. components: "rustfmt"
  52. - uses: Swatinem/rust-cache@v2
  53. with:
  54. prefix-key: bridge-${{ matrix.job.os }}
  55. - name: Cache Bridge
  56. id: cache-bridge
  57. uses: actions/cache@v3
  58. with:
  59. path: /tmp/flutter_rust_bridge
  60. key: vcpkg-${{ matrix.job.arch }}
  61. - name: Install flutter
  62. uses: subosito/flutter-action@v2
  63. with:
  64. channel: "stable"
  65. flutter-version: ${{ env.FLUTTER_VERSION }}
  66. cache: true
  67. - name: Install flutter rust bridge deps
  68. shell: bash
  69. run: |
  70. cargo install cargo-expand --version ${{ env.CARGO_EXPAND_VERSION }} --locked
  71. cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" --locked
  72. pushd flutter && sed -i -e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' pubspec.yaml && flutter pub get && popd
  73. - name: Run flutter rust bridge
  74. run: |
  75. ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h
  76. cp ./flutter/macos/Runner/bridge_generated.h ./flutter/ios/Runner/bridge_generated.h
  77. - name: Upload Artifact
  78. uses: actions/upload-artifact@master
  79. with:
  80. name: bridge-artifact
  81. path: |
  82. ./src/bridge_generated.rs
  83. ./src/bridge_generated.io.rs
  84. ./flutter/lib/generated_bridge.dart
  85. ./flutter/lib/generated_bridge.freezed.dart
  86. ./flutter/macos/Runner/bridge_generated.h
  87. ./flutter/ios/Runner/bridge_generated.h