From aa84d3f29ca0ea8966f12913ceb3eac6c9883d7f Mon Sep 17 00:00:00 2001 From: Bryan Gerlach Date: Fri, 27 Sep 2024 20:32:45 -0500 Subject: [PATCH] added bridge.yml --- .github/workflows/bridge.yml | 91 +++++++++++++++++++ .../third-party-RustDeskTempTopMostWindow.yml | 60 ++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 .github/workflows/bridge.yml create mode 100644 .github/workflows/third-party-RustDeskTempTopMostWindow.yml diff --git a/.github/workflows/bridge.yml b/.github/workflows/bridge.yml new file mode 100644 index 0000000..54180cc --- /dev/null +++ b/.github/workflows/bridge.yml @@ -0,0 +1,91 @@ +# 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.19.6" + 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 diff --git a/.github/workflows/third-party-RustDeskTempTopMostWindow.yml b/.github/workflows/third-party-RustDeskTempTopMostWindow.yml new file mode 100644 index 0000000..2f89092 --- /dev/null +++ b/.github/workflows/third-party-RustDeskTempTopMostWindow.yml @@ -0,0 +1,60 @@ +name: build RustDeskTempTopMostWindow + +on: + workflow_call: + inputs: + upload-artifact: + type: boolean + default: true + target: + description: 'Target' + required: true + type: string + default: 'windows-2022' + configuration: + description: 'Configuration' + required: true + type: string + default: 'Release' + platform: + description: 'Platform' + required: true + type: string + default: 'x64' + target_version: + description: 'TargetVersion' + required: true + type: string + default: 'Windows10' + +env: + project_path: WindowInjection/WindowInjection.vcxproj + +jobs: + build-RustDeskTempTopMostWindow: + runs-on: ${{ inputs.target }} + strategy: + fail-fast: false + env: + build_output_dir: RustDeskTempTopMostWindow/WindowInjection/${{ inputs.platform }}/${{ inputs.configuration }} + steps: + - name: Add MSBuild to PATH + uses: microsoft/setup-msbuild@v2 + + - name: Download the source code + run: | + git clone https://github.com/rustdesk-org/RustDeskTempTopMostWindow RustDeskTempTopMostWindow + + # Build. commit 53b548a5398624f7149a382000397993542ad796 is tag v0.3 + - name: Build the project + run: | + cd RustDeskTempTopMostWindow && git checkout 53b548a5398624f7149a382000397993542ad796 + msbuild ${{ env.project_path }} -p:Configuration=${{ inputs.configuration }} -p:Platform=${{ inputs.platform }} /p:TargetVersion=${{ inputs.target_version }} + + - name: Archive build artifacts + uses: actions/upload-artifact@master + if: ${{ inputs.upload-artifact }} + with: + name: topmostwindow-artifacts + path: | + ./${{ env.build_output_dir }}/WindowInjection.dll