name: Flutter Windows History Build on: [workflow_dispatch] env: LLVM_VERSION: "10.0" FLUTTER_VERSION: "3.16.9" TAG_NAME: "tmp" FLUTTER_RUST_BRIDGE_VERSION: "1.80.1" VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite" VERSION: "1.2.4" jobs: build-for-history-windows: name: ${{ matrix.job.date }} runs-on: ${{ matrix.job.os }} strategy: fail-fast: false matrix: job: - { target: x86_64-pc-windows-msvc, os: windows-2022, arch: x86_64, date: 2023-08-04, ref: 72c198a1e94cc1e0242fce88f92b3f3caedcd0c3 } steps: - name: Checkout source code uses: actions/checkout@v4 with: ref: ${{ matrix.job.ref }} - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v1 with: version: ${{ env.LLVM_VERSION }} - name: Install flutter uses: subosito/flutter-action@v2.12.0 #https://github.com/subosito/flutter-action/issues/277 with: channel: "stable" flutter-version: ${{ env.FLUTTER_VERSION }} cache: true - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable target: ${{ matrix.job.target }} override: true components: rustfmt profile: minimal # minimal component installation (ie, no documentation) - name: Install flutter rust bridge deps run: | cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" Push-Location flutter ; flutter pub get ; Pop-Location ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart - name: Setup vcpkg with Github Actions binary cache uses: lukka/run-vcpkg@v11 with: vcpkgDirectory: C:\vcpkg vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }} - name: Install vcpkg dependencies run: | $VCPKG_ROOT/vcpkg install --x-install-root="$VCPKG_ROOT/installed" shell: bash - name: Build rustdesk run: python3 .\build.py --portable --hwcodec --flutter - name: Build self-extracted executable shell: bash run: | pushd ./libs/portable python3 ./generate.py -f ../../flutter/build/windows/runner/Release/ -o . -e ../../flutter/build/windows/runner/Release/rustdesk.exe popd mkdir -p ./SignOutput mv ./target/release/rustdesk-portable-packer.exe ./SignOutput/rustdesk-${{ matrix.job.date }}-${{ matrix.job.target }}.exe - name: Publish Release uses: softprops/action-gh-release@v1 with: prerelease: true tag_name: ${{ env.TAG_NAME }} files: | ./SignOutput/rustdesk-*.exe