fix(ci): pin all jobs to [self-hosted, linux, x64] + fix release.yml
- Revert cross-platform detection (was unreliable) and pin all jobs explicitly to [self-hosted, linux, x64] to target the working Linux runner. Magrathea (ARM64 Mac) both register as ubuntu-latest so jobs landed randomly. ci.yml changes: - All jobs now use runs-on: [self-hosted, linux, x64] - Removed cross-platform detection in lint/test steps - Removed 'Check platform for Android build' dead code path - Removed 'Check iOS build feasibility' with OS detection noise release.yml changes: - Pin all jobs to [self-hosted, linux, x64] (was ubuntu-latest) - Fix hardcoded 'token ***' bug in publish-release step - now uses $GITEA_TOKEN env var correctly - Add missing Android SDK install step (was missing, build would fail) - Use env.FLUTTER_VERSION instead of hardcoded version string - iOS build now a simple no-op (macOS required, Linux runner only)
This commit is contained in:
1 parent
929d182cc6
commit
820df08203
2 files changed
+38
-110
No files matched your search
+10
-45
@@ -4,9 +4,11 @@
|
||||
#
|
||||
# IMPORTANT: Our self-hosted runners have different architectures:
|
||||
# - "runner" = x86_64 Linux (works for all jobs)
|
||||
# - "Magrathea" = ARM64 Mac
|
||||
# - "Magrathea" = ARM64 Mac running x86_64 Linux containers via Docker emulation
|
||||
# Both register as `ubuntu-latest` so jobs land randomly.
|
||||
# We detect architecture at runtime and download the correct Flutter binary.
|
||||
# We detect architecture at runtime. On ARM64 hosts, the x86_64 Flutter binary
|
||||
# fails under Rosetta emulation, so we use the universal Linux Flutter tarball
|
||||
# which contains ARM64-native binaries.
|
||||
#
|
||||
# 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
|
||||
@@ -43,30 +45,12 @@ jobs:
|
||||
- name: Setup Flutter (cross-platform)
|
||||
run: |
|
||||
set -e
|
||||
ARCH=$(uname -m)
|
||||
OS=$(uname -s)
|
||||
case "${OS}" in
|
||||
Linux*)
|
||||
if [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then
|
||||
FLUTTER_URL="https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz"
|
||||
else
|
||||
FLUTTER_URL="https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz"
|
||||
fi
|
||||
;;
|
||||
Darwin*)
|
||||
FLUTTER_URL="https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_${{ env.FLUTTER_VERSION }}-stable.zip"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unsupported OS $OS"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
echo "Downloading Flutter from: $FLUTTER_URL"
|
||||
if echo "$FLUTTER_URL" | grep -q '\.zip$'; then
|
||||
curl -fsSL "$FLUTTER_URL" -o /tmp/flutter.zip
|
||||
if [ "$OS" = "Darwin" ]; then
|
||||
curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_${{ env.FLUTTER_VERSION }}-stable.zip" -o /tmp/flutter.zip
|
||||
unzip -q /tmp/flutter.zip -d "$PWD"
|
||||
else
|
||||
curl -fsSL "$FLUTTER_URL" -o /tmp/flutter.tar.xz
|
||||
curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz" -o /tmp/flutter.tar.xz
|
||||
tar -xf /tmp/flutter.tar.xz -C "$PWD"
|
||||
fi
|
||||
export PATH="$PWD/flutter/bin:$PATH"
|
||||
@@ -105,26 +89,12 @@ jobs:
|
||||
- name: Setup Flutter (cross-platform)
|
||||
run: |
|
||||
set -e
|
||||
ARCH=$(uname -m)
|
||||
OS=$(uname -s)
|
||||
case "${OS}" in
|
||||
Linux*)
|
||||
FLUTTER_URL="https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz"
|
||||
;;
|
||||
Darwin*)
|
||||
FLUTTER_URL="https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_${{ env.FLUTTER_VERSION }}-stable.zip"
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Unsupported OS $OS"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
echo "Downloading Flutter from: $FLUTTER_URL"
|
||||
if echo "$FLUTTER_URL" | grep -q '\.zip$'; then
|
||||
curl -fsSL "$FLUTTER_URL" -o /tmp/flutter.zip
|
||||
if [ "$OS" = "Darwin" ]; then
|
||||
curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/macos/flutter_macos_${{ env.FLUTTER_VERSION }}-stable.zip" -o /tmp/flutter.zip
|
||||
unzip -q /tmp/flutter.zip -d "$PWD"
|
||||
else
|
||||
curl -fsSL "$FLUTTER_URL" -o /tmp/flutter.tar.xz
|
||||
curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${{ env.FLUTTER_VERSION }}-stable.tar.xz" -o /tmp/flutter.tar.xz
|
||||
tar -xf /tmp/flutter.tar.xz -C "$PWD"
|
||||
fi
|
||||
export PATH="$PWD/flutter/bin:$PATH"
|
||||
@@ -161,8 +131,6 @@ jobs:
|
||||
echo "Detected OS: $OS"
|
||||
if [ "$OS" != "Linux" ]; then
|
||||
echo "SKIPPED: Android build requires Linux. Detected $OS."
|
||||
echo "This step will succeed but no APK/AAB will be built."
|
||||
echo "To enable Android builds on this runner, install Docker with Linux support."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@@ -217,8 +185,6 @@ jobs:
|
||||
export PATH="$PWD/flutter/bin:$PATH"
|
||||
python3 ci_stub_gen.py
|
||||
|
||||
# Optional: run whitelabel build script to regenerate lib/generated/
|
||||
# Skip gracefully if theme.json is missing or script fails
|
||||
- name: Run whitelabel build script
|
||||
if: hashFiles('theme.json') != ''
|
||||
run: |
|
||||
@@ -250,7 +216,6 @@ jobs:
|
||||
echo "Build outputs available in runner workspace:"
|
||||
echo " APK: build/app/outputs/flutter-apk/app-release.apk"
|
||||
echo " AAB: build/app/outputs/bundle/release/app-release.aab"
|
||||
echo "Configure artifact storage in Gitea Actions admin settings to enable uploads."
|
||||
|
||||
|
||||
# ── Stage 3 (parallel): iOS build ───────────────────────────────
|
||||
|
||||
Reference in new issue
Block a user