mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-06-22 10:02:20 +00:00
ci: restore tokenless release workflow .github/workflows/tokenless-android.yml
This commit is contained in:
parent
8183c420dd
commit
5707e7fe73
1 changed files with 197 additions and 0 deletions
197
.github/workflows/tokenless-android.yml
vendored
Normal file
197
.github/workflows/tokenless-android.yml
vendored
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
name: Tokenless Android APK
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [tokenless-ci]
|
||||
paths:
|
||||
- src/ui_session_interface.rs
|
||||
- src/main.rs
|
||||
- .github/workflows/tokenless-android.yml
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
actions: read
|
||||
|
||||
concurrency:
|
||||
group: tokenless-android-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
RUST_VERSION: '1.75'
|
||||
CARGO_NDK_VERSION: '3.1.2'
|
||||
ANDROID_FLUTTER_VERSION: '3.24.5'
|
||||
VCPKG_COMMIT_ID: '120deac3062162151622ca4860575a33844ba10b'
|
||||
VERSION: '1.4.6-tokenless'
|
||||
NDK_VERSION: 'r28c'
|
||||
VCPKG_BINARY_SOURCES: 'clear;x-gha,readwrite'
|
||||
|
||||
jobs:
|
||||
generate-bridge:
|
||||
uses: ./.github/workflows/bridge.yml
|
||||
|
||||
build:
|
||||
needs: [generate-bridge]
|
||||
name: android-${{ matrix.job.arch }}-tokenless
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
job:
|
||||
- { arch: aarch64, target: aarch64-linux-android, android_target: arm64-v8a, flutter_target: android-arm64, apk_name: app-arm64-v8a-release.apk, ndk_lib: aarch64-linux-android }
|
||||
- { arch: armv7, target: armv7-linux-androideabi, android_target: armeabi-v7a, flutter_target: android-arm, apk_name: app-armeabi-v7a-release.apk, ndk_lib: arm-linux-androideabi }
|
||||
- { arch: x86_64, target: x86_64-linux-android, android_target: x86_64, flutter_target: android-x64, apk_name: app-x86_64-release.apk, ndk_lib: x86_64-linux-android }
|
||||
steps:
|
||||
- name: Free Disk Space
|
||||
uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be
|
||||
with:
|
||||
tool-cache: false
|
||||
android: false
|
||||
dotnet: true
|
||||
haskell: true
|
||||
large-packages: false
|
||||
docker-images: true
|
||||
swap-storage: false
|
||||
|
||||
- name: Export GitHub Actions cache environment variables
|
||||
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410
|
||||
with:
|
||||
script: |
|
||||
core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || '');
|
||||
core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || '');
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y clang cmake curl gcc-multilib git g++ g++-multilib \
|
||||
libayatana-appindicator3-dev libasound2-dev libc6-dev libclang-dev libunwind-dev \
|
||||
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk-3-dev libpam0g-dev \
|
||||
libpulse-dev libva-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
|
||||
libxdo-dev libxfixes-dev llvm-dev nasm ninja-build openjdk-17-jdk-headless \
|
||||
pkg-config tree wget
|
||||
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Verify tokenless patch is present
|
||||
run: |
|
||||
grep -n "let token = String::new();" src/ui_session_interface.rs
|
||||
grep -n "let token = String::new();" src/main.rs
|
||||
|
||||
- name: Install flutter
|
||||
uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2
|
||||
with:
|
||||
channel: stable
|
||||
flutter-version: ${{ env.ANDROID_FLUTTER_VERSION }}
|
||||
|
||||
- name: Patch flutter
|
||||
run: |
|
||||
cd $(dirname $(dirname $(which flutter)))
|
||||
[[ "3.24.5" == "${{ env.ANDROID_FLUTTER_VERSION }}" ]] && git apply ${{ github.workspace }}/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff
|
||||
|
||||
- uses: nttld/setup-ndk@ed92fe6cadad69be94a966a7ee3271275e62f779
|
||||
id: setup-ndk
|
||||
with:
|
||||
ndk-version: ${{ env.NDK_VERSION }}
|
||||
add-to-path: true
|
||||
|
||||
- name: Setup vcpkg with GitHub Actions binary cache
|
||||
uses: lukka/run-vcpkg@b1a0dd252f06b9e25b3c022a9a03bd7a427fb6a2
|
||||
with:
|
||||
vcpkgDirectory: /opt/artifacts/vcpkg
|
||||
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
|
||||
doNotCache: false
|
||||
|
||||
- name: Install vcpkg dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
if ! ./flutter/build_android_deps.sh "${{ matrix.job.android_target }}"; then
|
||||
find "${VCPKG_ROOT}/" -name "*.log" -print -exec cat {} \;
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Restore bridge files
|
||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
||||
with:
|
||||
name: bridge-artifact
|
||||
path: ./
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9
|
||||
with:
|
||||
toolchain: ${{ env.RUST_VERSION }}
|
||||
components: rustfmt
|
||||
|
||||
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32
|
||||
with:
|
||||
prefix-key: rustdesk-lib-cache-android-tokenless
|
||||
key: ${{ matrix.job.target }}
|
||||
|
||||
- name: Build rustdesk lib
|
||||
env:
|
||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
run: |
|
||||
rustup target add ${{ matrix.job.target }}
|
||||
cargo install cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} --locked
|
||||
case ${{ matrix.job.target }} in
|
||||
aarch64-linux-android) ./flutter/ndk_arm64.sh ;;
|
||||
armv7-linux-androideabi) ./flutter/ndk_arm.sh ;;
|
||||
x86_64-linux-android) ./flutter/ndk_x64.sh ;;
|
||||
esac
|
||||
mkdir -p ./flutter/android/app/src/main/jniLibs/${{ matrix.job.android_target }}
|
||||
cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/${{ matrix.job.android_target }}/librustdesk.so
|
||||
|
||||
- name: Build unsigned APK
|
||||
shell: bash
|
||||
env:
|
||||
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
|
||||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
|
||||
run: |
|
||||
export PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH
|
||||
sed -i "s/org.gradle.jvmargs=-Xmx1024M/org.gradle.jvmargs=-Xmx2g/g" ./flutter/android/gradle.properties
|
||||
sed -i "s/signingConfigs.release/signingConfigs.debug/g" ./flutter/android/app/build.gradle
|
||||
cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/${{ matrix.job.ndk_lib }}/libc++_shared.so ./flutter/android/app/src/main/jniLibs/${{ matrix.job.android_target }}/
|
||||
pushd flutter
|
||||
flutter build apk --release --target-platform ${{ matrix.job.flutter_target }} --split-per-abi
|
||||
popd
|
||||
mkdir -p apk
|
||||
mv ./flutter/build/app/outputs/flutter-apk/${{ matrix.job.apk_name }} ./apk/rustdesk-${{ env.VERSION }}-${{ matrix.job.arch }}-unsigned.apk
|
||||
|
||||
- name: Upload unsigned APK
|
||||
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a
|
||||
with:
|
||||
name: rustdesk-tokenless-android-${{ matrix.job.arch }}-unsigned-apk
|
||||
path: apk/*.apk
|
||||
|
||||
publish:
|
||||
name: publish-android-apks-to-release
|
||||
needs: [build]
|
||||
runs-on: ubuntu-24.04
|
||||
if: ${{ success() }}
|
||||
steps:
|
||||
- name: Download APK artifacts
|
||||
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c
|
||||
with:
|
||||
pattern: rustdesk-tokenless-android-*-unsigned-apk
|
||||
merge-multiple: true
|
||||
path: apk
|
||||
|
||||
- name: Publish APKs to release
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
RELEASE_TAG: tokenless-nightly
|
||||
run: |
|
||||
set -euo pipefail
|
||||
ls -la apk
|
||||
if ! gh release view "${RELEASE_TAG}" --repo "${GITHUB_REPOSITORY}" >/dev/null 2>&1; then
|
||||
gh release create "${RELEASE_TAG}" \
|
||||
--repo "${GITHUB_REPOSITORY}" \
|
||||
--target "${GITHUB_SHA}" \
|
||||
--title "RustDesk Tokenless Nightly" \
|
||||
--notes "Automated tokenless compatibility builds from tokenless-ci. Source commit: ${GITHUB_SHA}" \
|
||||
|| gh release view "${RELEASE_TAG}" --repo "${GITHUB_REPOSITORY}" >/dev/null
|
||||
fi
|
||||
gh release upload "${RELEASE_TAG}" --repo "${GITHUB_REPOSITORY}" apk/*.apk --clobber
|
||||
Loading…
Add table
Add a link
Reference in a new issue