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"