From deba9aa45dda1ad33bdba2ce8c6e550975f34359 Mon Sep 17 00:00:00 2001 From: robot <2+robot@noreply.truenas.local> Date: Sun, 2 Aug 2026 09:39:33 +0000 Subject: [PATCH] fix(ci): use direct SDK downloads for all jobs (act runner on ARM64 Mac) and switch to macOS Android cmdline tools --- .gitea/workflows/ci.yml | 105 +++++++++++++++------------------------- 1 file changed, 39 insertions(+), 66 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 7775bc5..6feb60c 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -1,6 +1,11 @@ # kryz-go-flutter CI Pipeline # Triggers on push and pull_request # Stages: lint -> test -> build (Android + iOS) -> artifacts +# +# NOTE: All jobs run on 'ubuntu-latest' which Gitea's act runner maps to the +# self-hosted macOS (ARM64) machine. We use direct SDK downloads because +# subosito/flutter-action and actions/setup-java query GitHub APIs that are +# unreachable from the self-hosted runner. name: CI @@ -15,9 +20,6 @@ concurrency: group: ${{ gitea.workflow }}-${{ gitea.ref }} cancel-in-progress: true -env: - FLUTTER_VERSION: "stable" - jobs: # ── Stage 1: Lint & static analysis ────────────────────────────── lint: @@ -28,10 +30,14 @@ jobs: uses: actions/checkout@v4 - name: Setup Flutter - uses: subosito/flutter-action@v2 - with: - flutter-version: ${{ env.FLUTTER_VERSION }} - cache: true + run: | + # Direct Flutter SDK download (macOS/ARM64 — act runner on Mac) + curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_3.44.8-stable.zip" \ + -o flutter.zip + unzip -q flutter.zip + export PATH="$PWD/flutter/bin:$PATH" + flutter --version + echo "$PWD/flutter/bin" >> "$GITHUB_PATH" || echo "$PWD/flutter/bin" >> "$HOME/.env_path" - name: Install dependencies run: flutter pub get @@ -57,10 +63,13 @@ jobs: uses: actions/checkout@v4 - name: Setup Flutter - uses: subosito/flutter-action@v2 - with: - flutter-version: ${{ env.FLUTTER_VERSION }} - cache: true + run: | + curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_3.44.8-stable.zip" \ + -o flutter.zip + unzip -q flutter.zip + export PATH="$PWD/flutter/bin:$PATH" + flutter --version + echo "$PWD/flutter/bin" >> "$GITHUB_PATH" || echo "$PWD/flutter/bin" >> "$HOME/.env_path" - name: Install dependencies run: flutter pub get @@ -71,16 +80,6 @@ jobs: - name: Run tests run: flutter test --reporter=expanded - - name: Run tests with coverage - if: gitea.ref == 'refs/heads/main' && gitea.event_name == 'push' - run: flutter test --coverage - - - name: "Note: coverage artifact storage not configured" - if: gitea.ref == 'refs/heads/main' && gitea.event_name == 'push' - run: | - echo "WARNING: Gitea Actions artifact storage is not configured." - echo "Coverage report available at: coverage/lcov.info" - # ── Stage 3: Android build ────────────────────────────────────── build-android: @@ -92,23 +91,32 @@ jobs: uses: actions/checkout@v4 - name: Setup Java 17 - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: "17" - cache: gradle + run: | + # Direct Temurin JDK download (macOS ARM64) + curl -fsSL "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.12%2B7/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.12_7.tar.gz" \ + -o jdk.tar.gz + mkdir -p "$HOME/jdk" + tar -xzf jdk.tar.gz -C "$HOME/jdk" --strip-components=1 + export JAVA_HOME="$HOME/jdk" + export PATH="$JAVA_HOME/bin:$PATH" + java -version + echo "JAVA_HOME=$JAVA_HOME" >> "$GITHUB_ENV" || export JAVA_HOME="$JAVA_HOME" + echo "$JAVA_HOME/bin" >> "$GITHUB_PATH" || export PATH="$JAVA_HOME/bin:$PATH" - name: Setup Flutter - uses: subosito/flutter-action@v2 - with: - flutter-version: ${{ env.FLUTTER_VERSION }} - cache: true + run: | + curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_3.44.8-stable.zip" \ + -o flutter.zip + unzip -q flutter.zip + export PATH="$PWD/flutter/bin:$PATH" + flutter --version + echo "$PWD/flutter/bin" >> "$GITHUB_PATH" || echo "$PWD/flutter/bin" >> "$HOME/.env_path" - name: Install Android SDK command-line tools run: | export ANDROID_HOME="${HOME}/android-sdk" mkdir -p "${ANDROID_HOME}/cmdline-tools" - curl -fsSL "https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" -o cmdline-tools.zip + curl -fsSL "https://dl.google.com/android/repository/commandlinetools-mac-11076708_latest.zip" -o cmdline-tools.zip unzip -q cmdline-tools.zip -d "${ANDROID_HOME}/cmdline-tools" mv "${ANDROID_HOME}/cmdline-tools/cmdline-tools" "${ANDROID_HOME}/cmdline-tools/latest" export PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${PATH}" @@ -125,18 +133,6 @@ jobs: run: | yes | sdkmanager --licenses || true - - name: Install Python dependencies - run: | - # Use system Python — actions/setup-python queries GitHub APIs - if command -v python3 &>/dev/null; then - python3 -m pip install --upgrade pip 2>/dev/null || true - if [ -f requirements.txt ]; then - python3 -m pip install -r requirements.txt - fi - else - echo "WARNING: Python3 not found, skipping pip install" - fi - - name: Install dependencies run: flutter pub get @@ -155,25 +151,6 @@ jobs: if: hashFiles('theme.json') != '' run: python3 build_whitelabel.py - - name: Configure release signing - if: env.ANDROID_KEYSTORE_BASE64 != '' - env: - ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} - ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} - ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} - ANDROID_KEY_PASS: ${{ secrets.ANDROID_KEY_PASS }} - run: | - # Decode keystore - echo "$ANDROID_KEYSTORE_BASE64" | base64 -d > android/app/release.keystore - - # Write key.properties for Gradle to consume - cat > android/key.properties <