1
0
mirror of git://f0xx.org/android_cast synced 2026-07-29 04:18:09 +03:00

Fix Docker CI and orchestration deploy reliability for full rebuild flows.

Use JDK 17 and make in the CI image, avoid self-overwriting DB init SQL, and make Gradle/native builds use container-local SDK paths and CMake caches.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Anton Afanasyeu
2026-06-02 17:37:32 +02:00
parent 097c0790b8
commit d7568b133b
4 changed files with 41 additions and 19 deletions

View File

@@ -35,11 +35,11 @@ ENV ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT}" \
ANDROIDCAST_USE_DISTCC=0 \ ANDROIDCAST_USE_DISTCC=0 \
ANDROIDCAST_CI_VERSION="${ANDROIDCAST_CI_VERSION}" \ ANDROIDCAST_CI_VERSION="${ANDROIDCAST_CI_VERSION}" \
GRADLE_USER_HOME=/root/.gradle \ GRADLE_USER_HOME=/root/.gradle \
JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
bash ca-certificates curl git openjdk-21-jdk-headless unzip wget \ bash ca-certificates curl git openjdk-17-jdk-headless unzip wget \
ninja-build cmake ccache \ make ninja-build cmake ccache \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y --no-install-recommends distcc \ RUN apt-get update && apt-get install -y --no-install-recommends distcc \

View File

@@ -111,18 +111,21 @@ return [
EOF EOF
cp "$SRC_SCHEMA" "$DB_INIT_DIR/010_schema.sql" cp "$SRC_SCHEMA" "$DB_INIT_DIR/010_schema.sql"
{ write_migration_with_db() {
local src="$1"
local dest="$2"
local tmp
tmp="$(mktemp)"
{
echo "USE \`${MARIADB_DATABASE}\`;" echo "USE \`${MARIADB_DATABASE}\`;"
cat "$SRC_MIG_004" cat "$src"
} >"$DB_INIT_DIR/040_ticket_workflow.sql" } >"$tmp"
{ mv "$tmp" "$dest"
echo "USE \`${MARIADB_DATABASE}\`;" }
cat "$SRC_MIG_005"
} >"$DB_INIT_DIR/050_ticket_attachments.sql" write_migration_with_db "$SRC_MIG_004" "$DB_INIT_DIR/040_ticket_workflow.sql"
{ write_migration_with_db "$SRC_MIG_005" "$DB_INIT_DIR/050_ticket_attachments.sql"
echo "USE \`${MARIADB_DATABASE}\`;" write_migration_with_db "$SRC_MIG_060" "$DB_INIT_DIR/060_build_ecosystem.sql"
cat "$SRC_MIG_060"
} >"$DB_INIT_DIR/060_build_ecosystem.sql"
echo "Pulling images..." echo "Pulling images..."
docker compose -f "$ROOT_DIR/docker-compose.yml" pull landing-fe gitea-fe crashes-fe build-fe mariadb gitea || true docker compose -f "$ROOT_DIR/docker-compose.yml" pull landing-fe gitea-fe crashes-fe build-fe mariadb gitea || true

View File

@@ -222,7 +222,9 @@ if [[ ! -f "$LIBVPX_A" ]]; then
fi fi
cp -f "$LIBVPX_A" "$OUT/libvpx.a" cp -f "$LIBVPX_A" "$OUT/libvpx.a"
cp -f "$OUT/libvpx.a" "$PROJECT_OUT/libvpx.a" if [[ "$OUT" != "$PROJECT_OUT" ]]; then
cp -f "$OUT/libvpx.a" "$PROJECT_OUT/libvpx.a"
fi
echo "" echo ""
echo "Built: $PROJECT_OUT/libvpx.a (size $(ls -lah "${PROJECT_OUT}/libvpx.a" | awk '{print $5}'))" echo "Built: $PROJECT_OUT/libvpx.a (size $(ls -lah "${PROJECT_OUT}/libvpx.a" | awk '{print $5}'))"

View File

@@ -42,10 +42,24 @@ fi
export ANDROIDCAST_ROOT="$ROOT" export ANDROIDCAST_ROOT="$ROOT"
export ANDROIDCAST_CCACHE="${ANDROIDCAST_CCACHE:-1}" export ANDROIDCAST_CCACHE="${ANDROIDCAST_CCACHE:-1}"
GRADLE_JAVA_OPT=()
if [[ -n "${JAVA_HOME:-}" ]]; then
GRADLE_JAVA_OPT=(-Dorg.gradle.java.home="${JAVA_HOME}")
fi
# shellcheck source=android-ndk.sh # shellcheck source=android-ndk.sh
source "$ROOT/scripts/android-ndk.sh" source "$ROOT/scripts/android-ndk.sh"
export ANDROID_NDK_HOME="$(androidcast_find_ndk_root "$ROOT")" export ANDROID_NDK_HOME="$(androidcast_find_ndk_root "$ROOT")"
export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME" export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME"
if [[ -n "${ANDROID_SDK_ROOT:-}" ]]; then
LOCAL_PROPS="$ROOT/local.properties"
LOCAL_PROPS_BACKUP=""
if [[ -f "$LOCAL_PROPS" ]]; then
LOCAL_PROPS_BACKUP="$(mktemp)"
cp -f "$LOCAL_PROPS" "$LOCAL_PROPS_BACKUP"
fi
trap 'if [[ -n "${LOCAL_PROPS_BACKUP:-}" && -f "${LOCAL_PROPS_BACKUP}" ]]; then cp -f "${LOCAL_PROPS_BACKUP}" "$LOCAL_PROPS"; rm -f "${LOCAL_PROPS_BACKUP}"; else rm -f "$LOCAL_PROPS"; fi' EXIT
printf 'sdk.dir=%s\n' "${ANDROID_SDK_ROOT//\\/\\\\}" > "$LOCAL_PROPS"
fi
if [[ "$RUN_NATIVE" == "1" && "$RUN_APK" == "1" ]]; then if [[ "$RUN_NATIVE" == "1" && "$RUN_APK" == "1" ]]; then
echo "==> Phase: native codecs" echo "==> Phase: native codecs"
@@ -59,16 +73,19 @@ else
echo "==> Phase: native codecs (skipped)" echo "==> Phase: native codecs (skipped)"
fi fi
# Avoid host-specific CMake cache paths when running in Docker.
rm -rf "$ROOT/app/.cxx" "$ROOT/app/build/.cxx" "$ROOT/app/build/intermediates/cxx"
if [[ "$RUN_APK" == "1" ]]; then if [[ "$RUN_APK" == "1" ]]; then
echo "==> Phase: gradle ${GRADLE_TASK}" echo "==> Phase: gradle ${GRADLE_TASK}"
if [[ "$RUN_UNIT_TESTS" == "1" ]]; then if [[ "$RUN_UNIT_TESTS" == "1" ]]; then
./gradlew --no-daemon clean "${GRADLE_TASK}" testDebugUnitTest ./gradlew --no-daemon "${GRADLE_JAVA_OPT[@]}" clean "${GRADLE_TASK}" testDebugUnitTest
else else
./gradlew --no-daemon clean "${GRADLE_TASK}" ./gradlew --no-daemon "${GRADLE_JAVA_OPT[@]}" clean "${GRADLE_TASK}"
fi fi
else else
echo "==> Phase: gradle tests-only" echo "==> Phase: gradle tests-only"
./gradlew --no-daemon testDebugUnitTest ./gradlew --no-daemon "${GRADLE_JAVA_OPT[@]}" testDebugUnitTest
fi fi
APK="" APK=""