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
+
5
+ on :
6
+ workflow_call :
7
+ inputs :
8
+ version :
9
+ description : ' Rustdesk Version'
10
+ required : true
11
+ default : ' 1.3.1'
12
+ type : string
13
+
14
+ env :
15
+ FLUTTER_VERSION : " 3.22.3"
16
+ FLUTTER_RUST_BRIDGE_VERSION : " 1.80.1"
17
+ RUST_VERSION : " 1.75" # https://github.com/rustdesk/rustdesk/discussions/7503
18
+
19
+ jobs :
20
+ generate_bridge :
21
+ runs-on : ${{ matrix.job.os }}
22
+ strategy :
23
+ fail-fast : false
24
+ matrix :
25
+ job :
26
+ - {
27
+ target : x86_64-unknown-linux-gnu,
28
+ os : ubuntu-20.04,
29
+ extra-build-args : " " ,
30
+ }
31
+ steps :
32
+ - name : Checkout source code
33
+ if : ${{ inputs.version != 'master' }}
34
+ uses : actions/checkout@v4
35
+ with :
36
+ repository : rustdesk/rustdesk
37
+ ref : refs/tags/${{ inputs.version }}
38
+
39
+ - name : Checkout source code
40
+ if : ${{ inputs.version == 'master' }}
41
+ uses : actions/checkout@v4
42
+ with :
43
+ repository : rustdesk/rustdesk
44
+
45
+ - name : Install prerequisites
46
+ run : |
47
+ sudo apt-get install ca-certificates -y
48
+ sudo apt-get update -y
49
+ sudo apt-get install -y \
50
+ clang \
51
+ cmake \
52
+ curl \
53
+ gcc \
54
+ git \
55
+ g++ \
56
+ libclang-10-dev \
57
+ libgtk-3-dev \
58
+ llvm-10-dev \
59
+ nasm \
60
+ ninja-build \
61
+ pkg-config \
62
+ wget
63
+
64
+ - name : Install Rust toolchain
65
+ uses : dtolnay/rust-toolchain@v1
66
+ with :
67
+ toolchain : ${{ env.RUST_VERSION }}
68
+ targets : ${{ matrix.job.target }}
69
+ components : " rustfmt"
70
+
71
+ - uses : Swatinem/rust-cache@v2
72
+ with :
73
+ prefix-key : bridge-${{ matrix.job.os }}
74
+
75
+ - name : Cache Bridge
76
+ id : cache-bridge
77
+ uses : actions/cache@v3
78
+ with :
79
+ path : /tmp/flutter_rust_bridge
80
+ key : vcpkg-${{ matrix.job.arch }}
81
+
82
+ - name : Install flutter
83
+ uses : subosito/flutter-action@v2
84
+ with :
85
+ channel : " stable"
86
+ flutter-version : ${{ env.FLUTTER_VERSION }}
87
+ cache : true
88
+
89
+ - name : Install flutter rust bridge deps
90
+ shell : bash
91
+ run : |
92
+ cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" --locked
93
+ pushd flutter && sed -i -e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' pubspec.yaml && flutter pub get && popd
94
+
95
+ - name : Run flutter rust bridge
96
+ run : |
97
+ ~/.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
98
+ cp ./flutter/macos/Runner/bridge_generated.h ./flutter/ios/Runner/bridge_generated.h
99
+
100
+ - name : Upload Artifact
101
+ uses : actions/upload-artifact@master
102
+ with :
103
+ name : bridge-artifact
104
+ path : |
105
+ ./src/bridge_generated.rs
106
+ ./src/bridge_generated.io.rs
107
+ ./flutter/lib/generated_bridge.dart
108
+ ./flutter/lib/generated_bridge.freezed.dart
109
+ ./flutter/macos/Runner/bridge_generated.h
110
+ ./flutter/ios/Runner/bridge_generated.h
0 commit comments