diff --git a/docker-compose.yml b/docker-compose.yml index 055a28a..4b4ea67 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -235,6 +235,8 @@ services: dockerfile: tauri_app/Dockerfile.apk args: NPM_REGISTRY: ${NPM_REGISTRY:-https://registry.npmjs.org} + PUBLIC_API_URL: ${PUBLIC_API_URL:-http://localhost:3000} + PUBLIC_FRONTEND_URL: ${PUBLIC_FRONTEND_URL:-http://localhost:3002} container_name: lendry-id-tauri-apk-builder restart: "no" environment: diff --git a/tauri_app/Dockerfile.apk b/tauri_app/Dockerfile.apk index f62dfb4..5f035d1 100644 --- a/tauri_app/Dockerfile.apk +++ b/tauri_app/Dockerfile.apk @@ -7,6 +7,8 @@ ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 ENV PATH=/root/.cargo/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/usr/local/bin:$PATH ARG NPM_REGISTRY=https://registry.npmjs.org +ARG PUBLIC_API_URL=http://localhost:3000 +ARG PUBLIC_FRONTEND_URL=http://localhost:3002 RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ @@ -62,8 +64,8 @@ ENV GRADLE_USER_HOME=/root/.gradle RUN /workspace/tauri_app/docker/prefetch-android-agp.sh -ENV VITE_API_URL=https://id.lendry.ru -ENV VITE_FRONTEND_URL=https://id.lendry.ru +ENV VITE_API_URL=${PUBLIC_API_URL} +ENV VITE_FRONTEND_URL=${PUBLIC_FRONTEND_URL} RUN /workspace/tauri_app/docker/warm-gradle-cache.sh CMD ["build-android-apk"] diff --git a/tauri_app/docker/offline-maven/com/android/tools/build/gradle/8.11.0/gradle-8.11.0.jar b/tauri_app/docker/offline-maven/com/android/tools/build/gradle/8.11.0/gradle-8.11.0.jar new file mode 100644 index 0000000..1cac9e1 Binary files /dev/null and b/tauri_app/docker/offline-maven/com/android/tools/build/gradle/8.11.0/gradle-8.11.0.jar differ diff --git a/tauri_app/docker/offline-maven/com/android/tools/build/gradle/8.11.0/gradle-8.11.0.pom b/tauri_app/docker/offline-maven/com/android/tools/build/gradle/8.11.0/gradle-8.11.0.pom new file mode 100644 index 0000000..d8cefa5 --- /dev/null +++ b/tauri_app/docker/offline-maven/com/android/tools/build/gradle/8.11.0/gradle-8.11.0.pom @@ -0,0 +1,363 @@ + + + + + + + + 4.0.0 + com.android.tools.build + gradle + 8.11.0 + + + com.android.tools.build + builder + 8.11.0 + compile + + + com.android.tools.build + builder-model + 8.11.0 + compile + + + com.android.tools.build + gradle-api + 8.11.0 + compile + + + com.android.tools.build + gradle-settings-api + 8.11.0 + runtime + + + com.android.tools + sdk-common + 31.11.0 + runtime + + + com.android.tools + sdklib + 31.11.0 + runtime + + + com.android.tools + repository + 31.11.0 + runtime + + + com.android.tools.ddms + ddmlib + 31.11.0 + runtime + + + com.android.tools.build + aapt2-proto + 8.11.0-12782657 + runtime + + + com.android.tools.build + aaptcompiler + 8.11.0 + runtime + + + com.android.tools.analytics-library + crash + 31.11.0 + runtime + + + com.android.tools.analytics-library + shared + 31.11.0 + runtime + + + com.android.tools.lint + lint-model + 31.11.0 + runtime + + + com.android.tools.lint + lint-typedef-remover + 31.11.0 + runtime + + + androidx.databinding + databinding-compiler-common + 8.11.0 + runtime + + + androidx.databinding + databinding-common + 8.11.0 + runtime + + + com.android.databinding + baseLibrary + 8.11.0 + runtime + + + com.android.tools.build + builder-test-api + 8.11.0 + runtime + + + com.android.tools.layoutlib + layoutlib-api + 31.11.0 + runtime + + + com.android.tools.utp + android-device-provider-ddmlib-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-device-provider-gradle-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-device-provider-profile-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-test-plugin-host-additional-test-output-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-test-plugin-host-coverage-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-test-plugin-host-emulator-control-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-test-plugin-host-logcat-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-test-plugin-host-apk-installer-proto + 31.11.0 + runtime + + + com.android.tools.utp + android-test-plugin-result-listener-gradle-proto + 31.11.0 + runtime + + + org.jetbrains.kotlin + kotlin-stdlib + 2.1.20 + runtime + + + com.android.tools.build + transform-api + 2.0.0-deprecated-use-gradle-api + runtime + + + org.apache.httpcomponents + httpmime + 4.5.6 + runtime + + + commons-io + commons-io + 2.16.1 + runtime + + + org.ow2.asm + asm + 9.7.1 + runtime + + + org.ow2.asm + asm-analysis + 9.7.1 + runtime + + + org.ow2.asm + asm-commons + 9.7.1 + runtime + + + org.ow2.asm + asm-util + 9.7.1 + runtime + + + org.bouncycastle + bcpkix-jdk18on + 1.79 + runtime + + + org.glassfish.jaxb + jaxb-runtime + 2.3.2 + runtime + + + net.sf.jopt-simple + jopt-simple + 4.9 + runtime + + + com.android.tools.build + bundletool + 1.18.1 + runtime + + + com.android.tools.build.jetifier + jetifier-core + 1.0.0-beta10 + runtime + + + com.android.tools.build.jetifier + jetifier-processor + 1.0.0-beta10 + runtime + + + com.squareup + javapoet + 1.10.0 + runtime + + + com.google.protobuf + protobuf-java + 3.25.5 + runtime + + + com.google.protobuf + protobuf-java-util + 3.25.5 + runtime + + + com.google.code.gson + gson + 2.11.0 + runtime + + + io.grpc + grpc-core + 1.69.1 + runtime + + + io.grpc + grpc-netty + 1.69.1 + runtime + + + io.grpc + grpc-protobuf + 1.69.1 + runtime + + + io.grpc + grpc-stub + 1.69.1 + runtime + + + io.grpc + grpc-inprocess + 1.69.1 + runtime + + + com.google.crypto.tink + tink + 1.7.0 + runtime + + + com.google.testing.platform + core-proto + 0.0.9-alpha03 + runtime + + + com.google.flatbuffers + flatbuffers-java + 1.12.0 + runtime + + + org.tensorflow + tensorflow-lite-metadata + 0.2.0 + runtime + + + Gradle plug-in to build Android applications. + https://developer.android.com/studio/build + com.android.tools.build.gradle + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + The Android Open Source Project + + + + git://android.googlesource.com/platform/tools/base.git + https://android.googlesource.com/platform/tools/base + + diff --git a/tauri_app/docker/populate-offline-agp.sh b/tauri_app/docker/populate-offline-agp.sh new file mode 100644 index 0000000..82ce410 --- /dev/null +++ b/tauri_app/docker/populate-offline-agp.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +# Download Android Gradle Plugin into tauri_app/docker/offline-maven for offline Docker builds. +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +AGP_VERSION="${ANDROID_GRADLE_PLUGIN_VERSION:-8.11.0}" +DEST="${ROOT}/docker/offline-maven/com/android/tools/build/gradle/${AGP_VERSION}" + +mkdir -p "${DEST}" + +try_download() { + local base_url="$1" + if curl -fsSL --connect-timeout 20 --max-time 120 \ + "${base_url}/com/android/tools/build/gradle/${AGP_VERSION}/gradle-${AGP_VERSION}.pom" \ + -o "${DEST}/gradle-${AGP_VERSION}.pom"; then + curl -fsSL --connect-timeout 20 --max-time 600 \ + "${base_url}/com/android/tools/build/gradle/${AGP_VERSION}/gradle-${AGP_VERSION}.jar" \ + -o "${DEST}/gradle-${AGP_VERSION}.jar" + echo "==> AGP ${AGP_VERSION} saved to ${DEST} (source: ${base_url})" + return 0 + fi + return 1 +} + +for base in \ + "https://maven.google.com" \ + "https://dl.google.com/android/maven2" \ + "https://dl.google.com/dl/android/maven2"; do + if try_download "${base}"; then + exit 0 + fi +done + +echo "Не удалось скачать AGP ${AGP_VERSION}. Проверьте доступ к Google Maven." >&2 +exit 1 diff --git a/tauri_app/docker/prefetch-android-agp.sh b/tauri_app/docker/prefetch-android-agp.sh index 813e472..b38047b 100644 --- a/tauri_app/docker/prefetch-android-agp.sh +++ b/tauri_app/docker/prefetch-android-agp.sh @@ -4,6 +4,18 @@ set -euo pipefail AGP_VERSION="${ANDROID_GRADLE_PLUGIN_VERSION:-8.11.0}" LOCAL_REPO="${ANDROID_AGP_LOCAL_REPO:-/opt/android-agp-maven}" +BUNDLED_REPO="${ANDROID_AGP_BUNDLED_REPO:-/workspace/tauri_app/docker/offline-maven}" +BUNDLED_ARTIFACT="${BUNDLED_REPO}/com/android/tools/build/gradle/${AGP_VERSION}/gradle-${AGP_VERSION}.jar" + +copy_bundled() { + if [ ! -f "${BUNDLED_ARTIFACT}" ]; then + return 1 + fi + mkdir -p "${LOCAL_REPO}" + cp -a "${BUNDLED_REPO}/." "${LOCAL_REPO}/" + echo "==> AGP ${AGP_VERSION} copied from bundled offline cache (${BUNDLED_REPO})" + return 0 +} try_download() { local base_url="$1" @@ -24,6 +36,10 @@ try_download() { echo "==> Prefetch Android Gradle Plugin ${AGP_VERSION}" +if copy_bundled; then + exit 0 +fi + MIRROR="" for base in \ "https://maven.google.com" \ @@ -36,7 +52,9 @@ for base in \ done if [ -z "${MIRROR}" ]; then - echo "Не удалось скачать Android Gradle Plugin ${AGP_VERSION} ни из одного зеркала Google Maven" >&2 + echo "Не удалось получить Android Gradle Plugin ${AGP_VERSION}." >&2 + echo "Нет bundled-кэша в ${BUNDLED_REPO} и Google Maven недоступен (404/сеть)." >&2 + echo "На машине с интернетом выполните: tauri_app/docker/populate-offline-agp.sh" >&2 exit 1 fi