From c30479f02fa57012a790542e199f0a9918c9caea Mon Sep 17 00:00:00 2001 From: Kingtous Date: Mon, 27 Mar 2023 10:50:24 +0800 Subject: [PATCH] feat: add sciter nightly build --- .github/workflows/flutter-ci.yml | 23 +++++++++- .github/workflows/flutter-nightly.yml | 60 ++++++++++++++++++++++++++- .github/workflows/sciter.yml | 53 +++++++++++++++++++++++ 3 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/sciter.yml diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index ff3f29ee7..5525586de 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -26,7 +26,7 @@ env: NDK_VERSION: "r23" jobs: - build-for-windows: + build-for-windows-flutter: name: ${{ matrix.job.target }} (${{ matrix.job.os }}) runs-on: ${{ matrix.job.os }} strategy: @@ -92,6 +92,27 @@ jobs: - name: Build rustdesk run: python3 .\build.py --portable --hwcodec --flutter + + # The fallback for the flutter version, we use Sciter for 32bit Windows. + build-for-windows-sciter: + name: ${{ matrix.job.target }} (${{ matrix.job.os }}) + runs-on: ${{ matrix.job.os }} + strategy: + fail-fast: false + matrix: + job: + # - { target: i686-pc-windows-msvc , os: windows-2019 } + # - { target: x86_64-pc-windows-gnu , os: windows-2019 } + - { target: i686-pc-windows-msvc, os: windows-2019 } + # - { target: aarch64-pc-windows-msvc, os: windows-2019 } + steps: + - name: Checkout source code + uses: actions/checkout@v3 + + - name: Build rustdesk sciter + uses: ./.github/workflows/sciter.yml + with: + target: ${{ matrix.job.target }} build-for-macOS: name: ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-args }}] diff --git a/.github/workflows/flutter-nightly.yml b/.github/workflows/flutter-nightly.yml index b9fcb6bb4..183c39d68 100644 --- a/.github/workflows/flutter-nightly.yml +++ b/.github/workflows/flutter-nightly.yml @@ -23,7 +23,7 @@ env: RENDEZVOUS_SERVER: '${{ secrets.RENDEZVOUS_SERVER }}' jobs: - build-for-windows: + build-for-windows-flutter: name: ${{ matrix.job.target }} (${{ matrix.job.os }}) runs-on: ${{ matrix.job.os }} strategy: @@ -134,6 +134,64 @@ jobs: files: | ./SignOutput/rustdesk-*.exe + # The fallback for the flutter version, we use Sciter for 32bit Windows. + build-for-windows-sciter: + name: ${{ matrix.job.target }} (${{ matrix.job.os }}) + runs-on: ${{ matrix.job.os }} + strategy: + fail-fast: false + matrix: + job: + # - { target: i686-pc-windows-msvc , os: windows-2019 } + # - { target: x86_64-pc-windows-gnu , os: windows-2019 } + - { target: i686-pc-windows-msvc, os: windows-2019 } + # - { target: aarch64-pc-windows-msvc, os: windows-2019 } + steps: + - name: Checkout source code + uses: actions/checkout@v3 + + - name: Build rustdesk sciter + uses: ./.github/workflows/sciter.yml + with: + target: ${{ matrix.job.target }} + + - name: Sign rustdesk files + uses: GermanBluefox/code-sign-action@v7 + with: + certificate: '${{ secrets.WINDOWS_PFX_BASE64 }}' + password: '${{ secrets.WINDOWS_PFX_PASSWORD }}' + certificatesha1: '${{ secrets.WINDOWS_PFX_SHA1_THUMBPRINT }}' + # certificatename: '${{ secrets.CERTNAME }}' + folder: './Release/' + recursive: true + + - name: Build self-extracted executable + shell: bash + run: | + pushd ./libs/portable + python3 ./generate.py -f ../../Release/ -o . -e ../../Release/rustdesk.exe + popd + mkdir -p ./SignOutput + mv ./target/release/rustdesk-portable-packer.exe ./SignOutput/rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}.exe + + - name: Sign rustdesk self-extracted file + uses: GermanBluefox/code-sign-action@v7 + with: + certificate: '${{ secrets.WINDOWS_PFX_BASE64 }}' + password: '${{ secrets.WINDOWS_PFX_PASSWORD }}' + certificatesha1: '${{ secrets.WINDOWS_PFX_SHA1_THUMBPRINT }}' + # certificatename: '${{ secrets.WINDOWS_PFX_NAME }}' + folder: './SignOutput' + recursive: false + + - name: Publish Release + uses: softprops/action-gh-release@v1 + with: + prerelease: true + tag_name: ${{ env.TAG_NAME }} + files: | + ./SignOutput/rustdesk-*.exe + build-for-macOS: name: ${{ matrix.job.target }} (${{ matrix.job.os }}) [${{ matrix.job.extra-build-args }}] runs-on: ${{ matrix.job.os }} diff --git a/.github/workflows/sciter.yml b/.github/workflows/sciter.yml new file mode 100644 index 000000000..cc0c801d2 --- /dev/null +++ b/.github/workflows/sciter.yml @@ -0,0 +1,53 @@ +name: Build Sciter + +on: + workflow_call: + inputs: + target: + required: true + type: string + outputs: + output_folder: + description: "The relative directory of the executable folder which contains all dependencies for RustDesk." + value: ${{ jobs.build-sciter.outputs.output_folder }} +jobs: + build-sciter: + runs-on: windows-2019 + outputs: + output_folder: ${{ steps.build.outputs.output_folder }} + steps: + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ inputs.job.target }} + override: true + profile: minimal # minimal component installation (ie, no documentation) + + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: ${{ matrix.job.os }}-sciter + + - name: Restore from cache and install vcpkg + uses: lukka/run-vcpkg@v7 + with: + setupOnly: true + vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }} + + - name: Install vcpkg dependencies + run: | + $VCPKG_ROOT/vcpkg install libvpx:x86-windows-static libyuv:x86-windows-static opus:x86-windows-static + shell: bash + + - name: Build rustdesk + id: build + shell: bash + run: | + python3 res/inline-sciter.py + # Replace the link for the ico. + cp flutter/windows/runner/resources/app_icon.ico res/icon.ico + cargo build --features inline --target=${{ matrix.job.target }} --release + mkdir -p ./Release + mv ./target/release/rustdesk.exe ./Release/rustdesk.exe + wget -O ./Release/sciter.dll https://github.com/c-smile/sciter-sdk/raw/master/bin.win/x32/sciter.dll + echo "output_folder=./Release" >> $GITHUB_OUTPUT