diff --git a/.devcontainer/ci.Dockerfile b/.devcontainer/ci.Dockerfile deleted file mode 100644 index 09aab62..0000000 --- a/.devcontainer/ci.Dockerfile +++ /dev/null @@ -1,59 +0,0 @@ -# CI-optimized image for kryz-go-flutter -# Build once on the runner host: -# docker build -f .devcontainer/ci.Dockerfile -t kryz-ci:latest .devcontainer -# Then all CI jobs use this image — no SDK downloads needed. -# -# First build: ~30 min (downloads Flutter + Android SDK) -# Subsequent builds: ~1 min (Docker layer caching) -# CI runtime without image: ~40 min (redownloads everything per job) -# CI runtime with image: ~2-5 min - -FROM --platform=linux/amd64 debian:bookworm-slim - -ARG FLUTTER_VERSION=3.44.0 - -ENV FLUTTER_HOME=/opt/flutter -ENV ANDROID_HOME=/opt/android-sdk -ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 -ENV PATH="${FLUTTER_HOME}/bin:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${JAVA_HOME}/bin:${PATH}" - -# ── Layer 1: system dependencies ────────────────────────────────── -# Stable layer — only rebuilds when package list changes -RUN apt-get update && apt-get install -y --no-install-recommends \ - wget curl unzip git xz-utils zip python3 libgtk-3-dev ninja-build \ - openjdk-17-jre-headless \ - && rm -rf /var/lib/apt/lists/* \ - && rm -rf /tmp/* /var/tmp/* - -# ── Layer 2: Flutter SDK (tarball, not git clone) ───────────────── -# Tarball is deterministic — layer stays cached until FLUTTER_VERSION changes -RUN wget -q "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz" \ - -O /tmp/flutter.tar.xz \ - && tar -xf /tmp/flutter.tar.xz -C /opt \ - && rm /tmp/flutter.tar.xz \ - && chmod -R a+r ${FLUTTER_HOME} - -# ── Layer 3: Android SDK ────────────────────────────────────────── -# Only rebuilds when cmdline-tools version changes -RUN mkdir -p ${ANDROID_HOME}/cmdline-tools \ - && wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdline-tools.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 \ - && sdkmanager "platform-tools" "platforms;android-35" "build-tools;35.0.0" \ - && chmod -R a+r ${ANDROID_HOME} - -# ── Layer 4: Flutter precache (bakes platform artifacts into image) ── -# Runs once — cached in the image layer -RUN flutter precache --android \ - && rm -rf ~/.cache/flutter/*/http_* \ - && rm -rf /tmp/* - -# ── Layer 5: non-root user ──────────────────────────────────────── -RUN groupadd -g 1000 vscode \ - && useradd -u 1000 -g 1000 -m -s /bin/bash vscode \ - && chown -R vscode:vscode ${ANDROID_HOME} ${FLUTTER_HOME} /home/vscode - -USER vscode -WORKDIR /home/vscode/projects diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index b804f16..dc8b0a6 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -16,7 +16,7 @@ jobs: # ── Lint (gate) ───────────────────────────────────────────── lint: name: Lint - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -55,7 +55,7 @@ jobs: # ── Test (gate) ────────────────────────────────────────────────── test: name: Test - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: [lint] steps: - name: Checkout @@ -89,7 +89,7 @@ jobs: # ── Android release build ─────────────────────────────────── build-android: name: Build Android Release - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: [test] steps: - name: Checkout @@ -98,12 +98,10 @@ jobs: - name: Setup Java 17 run: | set -e - curl -fsSL "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_x64_linux_hotspot_17.0.12_7.tar.gz" \ - -o /tmp/jdk.tar.gz - mkdir -p "$HOME/jdk" - tar -xzf /tmp/jdk.tar.gz -C "$HOME/jdk" --strip-components=1 - export PATH="$HOME/jdk/bin:$PATH" - export JAVA_HOME="$HOME/jdk" + apt-get update + apt-get install -y openjdk-17-jdk + export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" + export PATH="$JAVA_HOME/bin:$PATH" java -version - name: Setup Flutter @@ -177,13 +175,13 @@ jobs: - name: Build APK (release) run: | - export JAVA_HOME="$HOME/jdk" + export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" export PATH="$PWD/flutter/bin:$PATH" flutter build apk --release - name: Build App Bundle (release) run: | - export JAVA_HOME="$HOME/jdk" + export JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64" export PATH="$PWD/flutter/bin:$PATH" flutter build appbundle --release @@ -207,7 +205,7 @@ jobs: # on Linux runners. To enable, configure a macOS runner. build-ios: name: Build iOS Release - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: [test] steps: - name: Checkout @@ -224,7 +222,7 @@ jobs: # ── Publish Gitea Release ──────────────────────────────────── publish-release: name: Publish Release - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 needs: [build-android] steps: - name: Checkout