# Build environment for schwert_und_magie_on_pebble release artifacts: # Android SDK/NDK (companion app) + Pebble SDK (watch app), matching the # versions pinned in app/build.gradle.kts and validated on the maintainer's # dev machine. Rebuild and push with ../build-image.sh whenever a version # below, or the companion app's ndkVersion/compileSdk, changes. # # Does NOT contain the release keystore or any secrets — those are injected # at job runtime from Gitea Actions secrets, never baked into this image. FROM eclipse-temurin:21-jdk-jammy ARG ANDROID_CMDLINE_TOOLS_VERSION=11076708 ARG ANDROID_PLATFORM=android-36 ARG ANDROID_BUILD_TOOLS=36.1.0 ARG ANDROID_NDK=30.0.14904198 ARG PEBBLE_TOOL_VERSION=5.0.35 ARG PEBBLE_SDK_CORE_VERSION=4.9.169 ARG NODE_VERSION=24.16.0 ENV DEBIAN_FRONTEND=noninteractive \ ANDROID_HOME=/opt/android-sdk \ ANDROID_SDK_ROOT=/opt/android-sdk \ ANDROID_NDK_HOME=/opt/android-sdk/ndk/30.0.14904198 \ PATH=/root/.local/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:${PATH} # git/unzip/curl/jq: checkout, SDK downloads, and the release workflow's # calls to the Gitea API (create release, upload assets). # python3-venv: pebble-tool's `sdk install` creates a venv per SDK version. # dos2unix/autoconf/automake/pkg-config/xa65/build-essential/gettext: host # tools required by the companion app's build_vice.sh (see that file's own # preflight check) to cross-compile VICE via autotools before NDK clang # takes over for the actual target compilation. RUN apt-get update && apt-get install -y --no-install-recommends \ curl ca-certificates git unzip tar xz-utils python3 python3-venv file jq \ dos2unix autoconf automake pkg-config xa65 build-essential gettext \ && rm -rf /var/lib/apt/lists/* # --- Android SDK: cmdline-tools, platform, build-tools, NDK --- RUN mkdir -p "$ANDROID_HOME/cmdline-tools" \ && curl -sSL -o /tmp/cmdline-tools.zip \ "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS_VERSION}_latest.zip" \ && unzip -q /tmp/cmdline-tools.zip -d "$ANDROID_HOME/cmdline-tools" \ && mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest" \ && rm /tmp/cmdline-tools.zip \ && yes | sdkmanager --licenses >/dev/null \ && sdkmanager --install \ "platform-tools" \ "platforms;${ANDROID_PLATFORM}" \ "build-tools;${ANDROID_BUILD_TOOLS}" \ "ndk;${ANDROID_NDK}" \ >/dev/null # Node.js: `pebble sdk install` below runs `npm install` for the SDK-core's # bundled webpack tooling — it does not bring its own node/npm, only the JS # deps themselves. Version matches what's validated on the maintainer's # machine; sdk-core's own bundled arm-none-eabi toolchain needs nothing extra. RUN curl -sSL -o /tmp/node.tar.xz \ "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz" \ && tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1 \ && rm /tmp/node.tar.xz # --- Pebble SDK: pebble-tool + sdk-core --- RUN curl -LsSf https://astral.sh/uv/install.sh | sh \ && /root/.local/bin/uv tool install "pebble-tool==${PEBBLE_TOOL_VERSION}" \ && /root/.local/bin/pebble sdk install "${PEBBLE_SDK_CORE_VERSION}" WORKDIR /workspace