mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-11-28 23:59:05 +08:00
416 lines
15 KiB
YAML
416 lines
15 KiB
YAML
name: Flutter Nightly Build
|
|
|
|
on:
|
|
schedule:
|
|
# schedule build every night
|
|
- cron: "0 0 * * *"
|
|
workflow_dispatch:
|
|
|
|
env:
|
|
LLVM_VERSION: "10.0"
|
|
FLUTTER_VERSION: "3.0.5"
|
|
TAG_NAME: "nightly"
|
|
VCPKG_COMMIT_ID: '6ca56aeb457f033d344a7106cb3f9f1abf8f4e98'
|
|
VERSION: "1.2.0"
|
|
|
|
jobs:
|
|
build-for-windows:
|
|
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: x86_64-pc-windows-msvc , os: windows-2019 }
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install LLVM and Clang
|
|
uses: KyleMayes/install-llvm-action@v1
|
|
with:
|
|
version: ${{ env.LLVM_VERSION }}
|
|
|
|
- name: Install flutter
|
|
uses: subosito/flutter-action@v2
|
|
with:
|
|
channel: 'stable'
|
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
|
|
- name: Replace engine with rustdesk custom flutter engine
|
|
run: |
|
|
flutter doctor -v
|
|
flutter precache --windows
|
|
Invoke-WebRequest -Uri https://github.com/Kingtous/engine/releases/download/v3.0.5-rustdesk/windows-x64-release-flutter.zip -OutFile windows-x64-release-flutter.zip
|
|
Expand-Archive windows-x64-release-flutter.zip -DestinationPath engine
|
|
mv -Force engine/* C:/hostedtoolcache/windows/flutter/stable-3.0.5-x64/bin/cache/artifacts/engine/windows-x64-release/
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: "1.62"
|
|
target: ${{ matrix.job.target }}
|
|
override: true
|
|
components: rustfmt
|
|
profile: minimal # minimal component installation (ie, no documentation)
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: ${{ matrix.job.os }}
|
|
|
|
- name: Install flutter rust bridge deps
|
|
run: |
|
|
dart pub global activate ffigen --version 5.0.1
|
|
$exists = Test-Path ~/.cargo/bin/flutter_rust_bridge_codegen.exe
|
|
Push-Location ..
|
|
git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1
|
|
Push-Location flutter_rust_bridge/frb_codegen ; cargo install --path . ; Pop-Location
|
|
Pop-Location
|
|
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: 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:x64-windows-static libyuv:x64-windows-static opus:x64-windows-static
|
|
shell: bash
|
|
|
|
- name: Build rustdesk
|
|
run: python3 .\build.py --portable --hwcodec --flutter
|
|
|
|
- name: Rename rustdesk
|
|
shell: bash
|
|
run: |
|
|
for name in rustdesk*??-install.exe; do
|
|
mv "$name" "${name%%-install.exe}-${{ matrix.job.target }}.exe"
|
|
done
|
|
|
|
- name: Publish Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
prerelease: true
|
|
tag_name: ${{ env.TAG_NAME }}
|
|
files: |
|
|
rustdesk-*.exe
|
|
|
|
builf-for-macOS:
|
|
name: ${{ matrix.job.target }} (${{ matrix.job.os }},${{ matrix.job.extra-build-args }})
|
|
runs-on: ${{ matrix.job.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job:
|
|
- { target: x86_64-apple-darwin , os: macos-10.15, extra-build-args: ""}
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Get build target triple
|
|
uses: jungwinter/split@v2
|
|
id: build-target-triple
|
|
with:
|
|
separator: '-'
|
|
msg: ${{ matrix.job.target }}
|
|
|
|
- name: Install build runtime
|
|
run: |
|
|
brew install llvm create-dmg
|
|
|
|
- name: Install flutter
|
|
uses: subosito/flutter-action@v2
|
|
with:
|
|
channel: 'stable'
|
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
target: ${{ matrix.job.target }}
|
|
override: true
|
|
profile: minimal # minimal component installation (ie, no documentation)
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: ${{ matrix.job.os }}
|
|
|
|
- name: Install flutter rust bridge deps
|
|
shell: bash
|
|
run: |
|
|
dart pub global activate ffigen --version 5.0.1
|
|
# flutter_rust_bridge
|
|
pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 && popd
|
|
pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . && popd
|
|
pushd flutter && flutter pub get && popd
|
|
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
|
|
|
- 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 libyuv opus
|
|
shell: bash
|
|
|
|
- name: Install cargo bundle tools
|
|
run: |
|
|
cargo install cargo-bundle
|
|
|
|
- name: Show version information (Rust, cargo, Clang)
|
|
shell: bash
|
|
run: |
|
|
clang --version || true
|
|
rustup -V
|
|
rustup toolchain list
|
|
rustup default
|
|
cargo -V
|
|
rustc -V
|
|
|
|
- name: Build rustdesk
|
|
run: ./build.py --flutter --hwcodec ${{ matrix.job.extra-build-args }}
|
|
|
|
|
|
build-for-linux:
|
|
name: ${{ matrix.job.target }} (${{ matrix.job.os }},${{ matrix.job.extra-build-args }})
|
|
runs-on: ${{ matrix.job.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job:
|
|
# - { target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
|
|
# - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: x86_64-apple-darwin , os: macos-10.15 }
|
|
- { target: x86_64-unknown-linux-gnu , os: ubuntu-18.04, extra-build-args: ""}
|
|
- { target: x86_64-unknown-linux-gnu , os: ubuntu-18.04, extra-build-args: "--flatpak"}
|
|
# - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Get build target triple
|
|
uses: jungwinter/split@v2
|
|
id: build-target-triple
|
|
with:
|
|
separator: '-'
|
|
msg: ${{ matrix.job.target }}
|
|
|
|
- name: Install prerequisites
|
|
run: |
|
|
case ${{ matrix.job.target }} in
|
|
x86_64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt install -y g++ gcc git curl wget nasm yasm libgtk-3-dev clang libxcb-randr0-dev libxdo-dev libxfixes-dev libxcb-shape0-dev libxcb-xfixes0-dev libasound2-dev libpulse-dev cmake libclang-dev ninja-build libappindicator3-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libvdpau-dev libva-dev libclang-dev llvm-dev libclang-10-dev llvm-10-dev;;
|
|
# arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
|
|
# aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
|
|
esac
|
|
|
|
- name: Install flutter
|
|
uses: subosito/flutter-action@v2
|
|
with:
|
|
channel: 'stable'
|
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
|
|
- name: Install Rust toolchain
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
target: ${{ matrix.job.target }}
|
|
override: true
|
|
profile: minimal # minimal component installation (ie, no documentation)
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: ${{ matrix.job.os }}
|
|
|
|
- name: Install flutter rust bridge deps
|
|
shell: bash
|
|
run: |
|
|
dart pub global activate ffigen --version 5.0.1
|
|
# flutter_rust_bridge
|
|
pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 && popd
|
|
pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . && popd
|
|
pushd flutter && flutter pub get && popd
|
|
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart
|
|
|
|
- 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 libyuv opus
|
|
shell: bash
|
|
|
|
- name: Install cargo bundle tools
|
|
run: |
|
|
cargo install cargo-bundle
|
|
|
|
- name: Show version information (Rust, cargo, GCC)
|
|
shell: bash
|
|
run: |
|
|
gcc --version || true
|
|
rustup -V
|
|
rustup toolchain list
|
|
rustup default
|
|
cargo -V
|
|
rustc -V
|
|
|
|
- name: Build rustdesk
|
|
run: ./build.py --flutter --hwcodec ${{ matrix.job.extra-build-args }}
|
|
|
|
- name: Rename rustdesk
|
|
shell: bash
|
|
run: |
|
|
for name in rustdesk*??.deb; do
|
|
mv "$name" "${name%%.deb}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb"
|
|
done
|
|
|
|
- name: Publish debian package
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
prerelease: true
|
|
tag_name: ${{ env.TAG_NAME }}
|
|
files: |
|
|
rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
|
|
|
- name: Upload Artifcat
|
|
uses: actions/upload-artifact@master
|
|
if: ${{ contains(matrix.job.extra-build-args, 'flatpak') }}
|
|
with:
|
|
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
|
path: rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
|
|
|
- name: Build archlinux package
|
|
if: ${{ matrix.job.extra-build-args == '' }}
|
|
uses: vufa/arch-makepkg-action@master
|
|
with:
|
|
packages: >
|
|
llvm
|
|
clang
|
|
libva
|
|
libvdpau
|
|
rust
|
|
gstreamer
|
|
unzip
|
|
git
|
|
cmake
|
|
gcc
|
|
curl
|
|
wget
|
|
yasm
|
|
nasm
|
|
zip
|
|
make
|
|
pkg-config
|
|
clang
|
|
gtk3
|
|
xdotool
|
|
libxcb
|
|
libxfixes
|
|
alsa-lib
|
|
pipewire
|
|
python
|
|
ttf-arphic-uming
|
|
libappindicator-gtk3
|
|
scripts: |
|
|
cd res && HBB=`pwd`/.. FLUTTER=1 makepkg -f
|
|
|
|
- name: Publish archlinux package
|
|
if: ${{ matrix.job.extra-build-args == '' }}
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
prerelease: true
|
|
tag_name: ${{ env.TAG_NAME }}
|
|
files: |
|
|
res/rustdesk*.zst
|
|
|
|
- name: Make RPM package
|
|
shell: bash
|
|
if: ${{ matrix.job.extra-build-args == '' }}
|
|
run: |
|
|
sudo apt install -y rpm
|
|
HBB=`pwd` rpmbuild ./res/rpm-flutter.spec -bb
|
|
pushd ~/rpmbuild/RPMS/${{ steps.build-target-triple.outputs._0 }}
|
|
for name in rustdesk*??.rpm; do
|
|
mv "$name" "${name%%.rpm}-fedora28-centos8.rpm"
|
|
done
|
|
|
|
- name: Publish fedora28/centos8 package
|
|
if: ${{ matrix.job.extra-build-args == '' }}
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
prerelease: true
|
|
tag_name: ${{ env.TAG_NAME }}
|
|
files: |
|
|
/home/runner/rpmbuild/RPMS/${{ steps.build-target-triple.outputs._0 }}/*.rpm
|
|
|
|
build-flatpak:
|
|
name: Build Flatpak
|
|
needs: [build-for-linux]
|
|
runs-on: ${{ matrix.job.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
job:
|
|
# - { target: aarch64-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: arm-unknown-linux-gnueabihf , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: arm-unknown-linux-musleabihf, os: ubuntu-20.04, use-cross: true }
|
|
# - { target: i686-unknown-linux-gnu , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: i686-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
|
# - { target: x86_64-apple-darwin , os: macos-10.15 }
|
|
- { target: x86_64-unknown-linux-gnu , os: ubuntu-18.04, arch: x86_64}
|
|
# - { target: x86_64-unknown-linux-musl , os: ubuntu-20.04, use-cross: true }
|
|
steps:
|
|
- name: Checkout source code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install -y flatpak flatpak-builder cmake g++ gcc git curl wget nasm yasm libgtk-3-dev
|
|
|
|
- name: Download Binary
|
|
uses: actions/download-artifact@master
|
|
with:
|
|
name: rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb
|
|
path: .
|
|
|
|
- name: Rename Binary
|
|
run: |
|
|
mv rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}-${{ matrix.job.os }}.deb rustdesk-${{ env.VERSION }}.deb
|
|
|
|
- name: Install Flatpak deps
|
|
run: |
|
|
flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
flatpak --user install -y flathub org.freedesktop.Platform/${{ matrix.job.arch }}/21.08
|
|
flatpak --user install -y flathub org.freedesktop.Sdk/${{ matrix.job.arch }}/21.08
|
|
|
|
- name: Make Flatpak package
|
|
run: |
|
|
pushd flatpak
|
|
git clone https://github.com/flathub/shared-modules.git --depth=1
|
|
flatpak-builder --user --force-clean --repo=repo ./build ./rustdesk.json
|
|
flatpak build-bundle ./repo rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}.flatpak org.rustdesk.rustdesk
|
|
|
|
- name: Publish flatpak package
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
prerelease: true
|
|
tag_name: ${{ env.TAG_NAME }}
|
|
files: |
|
|
flatpak/rustdesk-${{ env.VERSION }}-${{ matrix.job.target }}.flatpak
|
|
|