From 568f425ef75365d5a0f8a23b898cc7f035bad5d1 Mon Sep 17 00:00:00 2001 From: cschlaefke Date: Mon, 2 Nov 2026 20:24:50 +0100 Subject: [PATCH] ci: install pinned Flutter SDK from git tag instead of missing image Refs #31 Co-Authored-By: Claude Sonnet 5.5 --- .forgejo/workflows/ci.yml | 58 +++++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml index 4600444..77cb8ee 100644 --- a/.forgejo/workflows/ci.yml +++ b/.forgejo/workflows/ci.yml @@ -9,6 +9,10 @@ on: env: SUPABASE_CLI_VERSION: 3.0.0 + # Einzige Stelle für die Flutter-Version (= lokale Version, Dart 3.13.7; muss zu app/pubspec.yaml passen). + # Muss ein existierendes Tag in github.com/flutter/flutter sein. Ein Cirrus-Image mit dieser Version gibt es nicht. + FLUTTER_VERSION: 3.47.9 + FLUTTER_HOME: /opt/flutter jobs: # Format, Analyse, Tests. Generierte Dateien (*.g.dart, gen-l10n) sind eingecheckt und @@ -16,7 +20,7 @@ jobs: flutter: runs-on: docker container: - image: ghcr.io/cirruslabs/flutter:3.47.9 # = lokale Flutter-Version (Dart 3.13.7); in beiden Jobs gleich halten + image: node:22.12-bookworm # gepinnt; enthält git, curl, unzip, xz und Node (für JS-Actions) env: PUB_CACHE: ${{ github.workspace }}/.pub-cache defaults: @@ -25,12 +29,33 @@ jobs: steps: - uses: https://code.forgejo.org/actions/checkout@v4 + - name: Flutter-SDK-Cache + id: flutter-cache + uses: https://code.forgejo.org/actions/cache@v4 + with: + path: ${{ env.FLUTTER_HOME }} + key: flutter-${{ env.FLUTTER_VERSION }}-node22.12-bookworm + + - name: Flutter installieren + run: | + if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then + rm -rf "$FLUTTER_HOME" + git clone --depth 1 --branch "$FLUTTER_VERSION" https://github.com/flutter/flutter.git "$FLUTTER_HOME" + fi + echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH" + export PATH="$FLUTTER_HOME/bin:$PATH" + export CI=true + flutter config --no-analytics --enable-web + flutter --version + flutter precache --web + working-directory: . + - name: Pub-Cache uses: https://code.forgejo.org/actions/cache@v4 with: path: ${{ github.workspace }}/.pub-cache - key: pub-${{ hashFiles('app/pubspec.lock') }} - restore-keys: pub- + key: pub-${{ env.FLUTTER_VERSION }}-${{ hashFiles('app/pubspec.lock') }} + restore-keys: pub-${{ env.FLUTTER_VERSION }}- - name: Abhängigkeiten (erzeugt auch gen-l10n) run: flutter pub get @@ -61,7 +86,7 @@ jobs: web-build: runs-on: docker container: - image: ghcr.io/cirruslabs/flutter:3.47.9 + image: node:22.12-bookworm # gepinnt; enthält git, curl, unzip, xz und Node (für JS-Actions) env: PUB_CACHE: ${{ github.workspace }}/.pub-cache defaults: @@ -70,12 +95,33 @@ jobs: steps: - uses: https://code.forgejo.org/actions/checkout@v4 + - name: Flutter-SDK-Cache + id: flutter-cache + uses: https://code.forgejo.org/actions/cache@v4 + with: + path: ${{ env.FLUTTER_HOME }} + key: flutter-${{ env.FLUTTER_VERSION }}-node22.12-bookworm + + - name: Flutter installieren + run: | + if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then + rm -rf "$FLUTTER_HOME" + git clone --depth 1 --branch "$FLUTTER_VERSION" https://github.com/flutter/flutter.git "$FLUTTER_HOME" + fi + echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH" + export PATH="$FLUTTER_HOME/bin:$PATH" + export CI=true + flutter config --no-analytics --enable-web + flutter --version + flutter precache --web + working-directory: . + - name: Pub-Cache uses: https://code.forgejo.org/actions/cache@v4 with: path: ${{ github.workspace }}/.pub-cache - key: pub-${{ hashFiles('app/pubspec.lock') }} - restore-keys: pub- + key: pub-${{ env.FLUTTER_VERSION }}-${{ hashFiles('app/pubspec.lock') }} + restore-keys: pub-${{ env.FLUTTER_VERSION }}- - name: Abhängigkeiten run: flutter pub get