move to RAM build
Build RustDesk Android / Build RustDesk Android ARM64 (push) Failing after 4m56s

This commit is contained in:
gandc committed 2026-10-03 23:28:38 +03:00
1 parent 02850ee1f6
commit d8242e61d7
2 files changed
+136 -4

No files matched your search

+102
View File
@@ -0,0 +1,102 @@
name: Prepare RAM CI environment
description: Keep RustDesk Linux build data and package caches in the RAM workspace
runs:
using: composite
steps:
- name: Configure RAM CI environment
shell: bash
run: |
set -euo pipefail
set +x
# The runner must mount its workspace on executable tmpfs, as for Fluxer.
case "$(findmnt -n -o FSTYPE -T "$GITHUB_WORKSPACE")" in
tmpfs|ramfs) ;;
*) echo "ERROR: GITHUB_WORKSPACE must be backed by RAM (tmpfs/ramfs)."; exit 1 ;;
esac
normalize_url() {
local value="$1"
value="${value//$'\r'/}"
value="${value//$'\n'/}"
case "$value" in
\"*\") value="${value#\"}"; value="${value%\"}" ;;
\'*\') value="${value#\'}"; value="${value%\'}" ;;
esac
test -n "$value" || { echo "ERROR: Nexus URL is empty" >&2; return 1; }
printf '%s/' "${value%/}"
}
NEXUS_CARGO_URL="$(normalize_url "${NEXUS_CARGO_URL:-}")"
NEXUS_MAVEN_URL="$(normalize_url "${NEXUS_MAVEN_URL:-}")"
# Preserve rustup and its proxies before moving HOME and Cargo caches.
# Unlike Fluxer, RustDesk selects multiple toolchains from upstream CI.
RUSTUP_HOME="${RUSTUP_HOME:-$HOME/.rustup}"
RUSTUP_EXE="$(command -v rustup)"
RUSTUP_BIN="$(dirname "$RUSTUP_EXE")"
CI_ROOT="$GITHUB_WORKSPACE/.ci"
mkdir -p "$CI_ROOT"/{home,tmp,cargo/bin,pub-cache,gradle/init.d,xdg-cache,xdg-config,xdg-data,vcpkg-cache,vcpkg-downloads}
chmod 700 "$CI_ROOT/home" "$CI_ROOT/cargo" "$CI_ROOT/gradle"
# Fail before cloning/building when the RAM mount is noexec.
printf '#!/bin/sh\nexit 0\n' > "$CI_ROOT/tmp/check-exec"
chmod +x "$CI_ROOT/tmp/check-exec"
"$CI_ROOT/tmp/check-exec"
rm "$CI_ROOT/tmp/check-exec"
cat > "$CI_ROOT/cargo/config.toml" <<EOF_CARGO
[source.crates-io]
replace-with = "cargo-proxy"
[source.cargo-proxy]
registry = "sparse+$NEXUS_CARGO_URL"
EOF_CARGO
chmod 600 "$CI_ROOT/cargo/config.toml"
cat > "$CI_ROOT/gradle/init.d/00-nexus.init.gradle" <<'EOF_GRADLE'
def nexusUrl = System.getenv("NEXUS_MAVEN_URL")
if (nexusUrl == null || nexusUrl.isBlank()) {
throw new GradleException("NEXUS_MAVEN_URL is not configured")
}
def configureNexusRepository = { repositories ->
repositories.maven {
name = "CI_NEXUS"
url = uri(nexusUrl)
allowInsecureProtocol = nexusUrl.startsWith("http://")
}
}
gradle.beforeSettings { settings ->
configureNexusRepository(settings.pluginManagement.repositories)
configureNexusRepository(settings.dependencyResolutionManagement.repositories)
}
EOF_GRADLE
{
echo "CI_ROOT=$CI_ROOT"
echo "HOME=$CI_ROOT/home"
echo "TMPDIR=$CI_ROOT/tmp"
echo "TMP=$CI_ROOT/tmp"
echo "TEMP=$CI_ROOT/tmp"
echo "XDG_CACHE_HOME=$CI_ROOT/xdg-cache"
echo "XDG_CONFIG_HOME=$CI_ROOT/xdg-config"
echo "XDG_DATA_HOME=$CI_ROOT/xdg-data"
echo "CARGO_HOME=$CI_ROOT/cargo"
# Upstream scripts expect rustdesk/target; do not move it elsewhere.
echo "CARGO_TARGET_DIR=$GITHUB_WORKSPACE/rustdesk/target"
echo "RUSTUP_HOME=$RUSTUP_HOME"
echo "PUB_CACHE=$CI_ROOT/pub-cache"
echo "GRADLE_USER_HOME=$CI_ROOT/gradle"
printf 'JAVA_TOOL_OPTIONS=%s -Djava.io.tmpdir="%s"\n' "${JAVA_TOOL_OPTIONS:-}" "$CI_ROOT/tmp"
echo "VCPKG_DEFAULT_BINARY_CACHE=$CI_ROOT/vcpkg-cache"
echo "VCPKG_DOWNLOADS=$CI_ROOT/vcpkg-downloads"
echo "NEXUS_CARGO_URL=$NEXUS_CARGO_URL"
echo "NEXUS_MAVEN_URL=$NEXUS_MAVEN_URL"
} >> "$GITHUB_ENV"
{
echo "$RUSTUP_BIN"
echo "$CI_ROOT/cargo/bin"
} >> "$GITHUB_PATH"
df -h "$GITHUB_WORKSPACE"
+34 -4
View File
@@ -7,6 +7,7 @@ on:
- main - main
paths: paths:
- ".gitea/workflows/android.yml" - ".gitea/workflows/android.yml"
- ".gitea/actions/prepare-ram-ci/**"
env: env:
# Change only this value to build another RustDesk tag/release. # Change only this value to build another RustDesk tag/release.
@@ -20,9 +21,23 @@ env:
jobs: jobs:
build-android: build-android:
name: Build RustDesk Android ARM64 name: Build RustDesk Android ARM64
runs-on: rustdesk-android runs-on: ci-linux-builder
defaults:
run:
shell: bash
env:
NEXUS_CARGO_URL: ${{ secrets.NEXUS_CARGO_URL }}
NEXUS_MAVEN_URL: ${{ secrets.NEXUS_MAVEN_URL }}
steps: steps:
- name: Checkout CI repository
uses: actions/checkout@v4
- name: Prepare RAM CI environment
uses: ./.gitea/actions/prepare-ram-ci
# ----------------------------------------------------------------------- # -----------------------------------------------------------------------
# RustDesk source # RustDesk source
# ----------------------------------------------------------------------- # -----------------------------------------------------------------------
@@ -249,7 +264,13 @@ jobs:
[ -n "${preferred}" ] && [ -n "${preferred}" ] &&
[ "$(flutter_version "${preferred}")" = "${requested}" ] [ "$(flutter_version "${preferred}")" = "${requested}" ]
); then ); then
root="${preferred}" # Flutter writes into its SDK cache and receives source patches.
# Copy the image SDK into RAM before using it.
root="${fallback}"
if [ ! -d "${root}" ]; then
mkdir -p "$(dirname "${root}")"
cp -a "${preferred}" "${root}"
fi
else else
root="${fallback}" root="${fallback}"
@@ -397,8 +418,17 @@ jobs:
echo echo
echo "=== vcpkg ===" echo "=== vcpkg ==="
test -n "${VCPKG_ROOT:-}" # Reuse the image checkout and prebuilt libraries in RAM when present.
test -d "${VCPKG_ROOT}/.git" image_vcpkg="${VCPKG_ROOT:-}"
export VCPKG_ROOT="${CI_ROOT}/vcpkg"
if [ ! -d "${VCPKG_ROOT}/.git" ]; then
if [ -n "${image_vcpkg}" ] && [ -d "${image_vcpkg}/.git" ]; then
cp -a "${image_vcpkg}" "${VCPKG_ROOT}"
else
git clone https://github.com/microsoft/vcpkg.git "${VCPKG_ROOT}"
fi
fi
echo "VCPKG_ROOT=${VCPKG_ROOT}" >> "${GITHUB_ENV}"
current_vcpkg="$( current_vcpkg="$(
git -C "${VCPKG_ROOT}" rev-parse HEAD git -C "${VCPKG_ROOT}" rev-parse HEAD