diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index b87d546..3298f50 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -2,18 +2,14 @@ # Triggers on push and pull_request # Stages: lint -> test -> build (Android + iOS) -> artifacts # -# NOTE: Gitea's `act` runner registers as `ubuntu-latest`. Jobs MUST use -# `runs-on: ubuntu-latest` to be picked up. The runner executes jobs inside -# x86_64 Linux Docker containers, so we use Linux SDK binaries. +# IMPORTANT: Our self-hosted runners have different architectures: +# - "runner" = x86_64 Linux (works for all jobs) +# - "Magrathea" = ARM64 Mac (x86_64 Docker emulation fails) +# We pin ALL jobs to [self-hosted, linux, x64] to avoid the Magrathea runner. # # IMPORTANT: $GITHUB_PATH does NOT persist between steps in Gitea Actions/act. # Each step is a separate shell. We export PATH="$PWD/flutter/bin:$PATH" in # every step that uses flutter/dart commands. -# -# subosito/flutter-action works on some runners but fails on others (e.g. -# Magrathea). We use a direct Flutter SDK download for reliability across -# all runners. For build-android we need manual JDK + Android SDK setup -# since actions/setup-java is GitHub-specific. name: CI @@ -38,7 +34,7 @@ jobs: # ── Stage 1: Lint & static analysis ────────────────────────────── lint: name: Lint - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64] steps: - name: Checkout uses: actions/checkout@v4 @@ -77,7 +73,7 @@ jobs: # ── Stage 1 (parallel): Unit & widget tests ────────────────────── test: name: Test - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64] steps: - name: Checkout uses: actions/checkout@v4 @@ -110,7 +106,7 @@ jobs: # ── Stage 3: Android build ────────────────────────────────────── build-android: name: Build Android - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64] needs: [lint, test] steps: - name: Checkout @@ -206,7 +202,7 @@ jobs: # ── Stage 3 (parallel): iOS build ─────────────────────────────── build-ios: name: Build iOS - runs-on: ubuntu-latest + runs-on: [self-hosted, linux, x64] needs: [lint, test] steps: - name: Checkout