The self-hosted runners register as 'ubuntu-latest', not '[self-hosted, linux, x64]'.
All recent CI runs (#43-49) have been stuck in 'queued' because no runner
matches the label. Run #42 (commit 38279ed) passed all 4 stages using
'runs-on: ubuntu-latest'.
This restores the working runner configuration while keeping the proven
inline SDK setup approach.
The 'docker run --rm' strategy (commit 065df61) requires Docker to be
available on the self-hosted runners. Jobs never leave 'queued'/'waiting'
because the runner cannot execute Docker commands.
Revert to the proven inline SDK setup from ffd37f3:
- Flutter SDK: download tarball with skip-if-already-installed
- Java 17: apt install with skip-if-already-installed
- Android SDK: cmdline-tools download with skip-if-already-installed
- Every step exports PATH=$PWD/flutter/bin:$PATH (act does not persist env)
This approach was verified working on run #42 (commit 38279ed) - all
4 stages passed: lint, test, build-android, build-ios.
The publish-release step had 'Authorization: Bearer ***' which would
never work. Replaced with 'Authorization: token ' so it
pulls from the workflow env var correctly.
Every job now runs inside kryz-ci:latest via 'docker run' with volume
mounts. The image is built once per pipeline (with a cache check) instead
of every job redownloading Flutter + Android SDK + Java independently.
Before: ~40 min (each of 3-4 jobs downloads ~750MB of SDKs from scratch)
After (first run): ~25 min (single Docker build, then all jobs use cached image)
After (cached): ~5-8 min (image already on runner, jobs just docker run)
Changes:
- ci.yml: replace inline SDK setup in lint/test/build-android with
'docker run --rm -v ${PWD}:/workspace kryz-ci:latest' per step
- release.yml: same container strategy + fix auth token leak (was
hardcoded '***' instead of using $GITEA_TOKEN env var)
- ci.Dockerfile: add cleanup (rm /tmp, http cache) to shrink image size
- Net reduction: 3 files changed, -111 lines removed
The pubspec requires sdk: ^3.11.5 (Dart >= 3.11.5).
Flutter 3.35.3 ships Dart 3.9.2 which does not satisfy this constraint.
Flutter 3.44.0 ships Dart 3.12.0 which satisfies the constraint.
Gitea Actions/act does NOT persist $GITHUB_PATH between steps.
Each step runs in a separate shell, so we must export PATH="$PWD/flutter/bin:$PATH"
in every step that uses flutter/dart commands.
- GITHUB_PATH does not persist between steps in Gitea Actions/act
- Install Flutter to /opt/flutter (system path accessible to all steps)
- Explicitly prefix PATH in every flutter/dart command
- Also install JDK to /opt/jdk for the same reason
- Use env.FLUTTER_VERSION variable for easy version bumps