name: Pull Request Pipeline on: pull_request: jobs: build-android: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up JDK run: | if command -v sudo >/dev/null 2>&1; then sudo apt-get update && sudo apt-get install -y openjdk-11-jdk else apt-get update && apt-get install -y openjdk-11-jdk fi - name: Install Flutter (wget) run: | wget --show-progress --progress=bar:force:noscroll:giga https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.38.2-stable.tar.xz tar xf flutter_linux_3.38.2-stable.tar.xz git config --global --add safe.directory "$(pwd)/flutter" echo "$(pwd)/flutter/bin" >> $GITEA_PATH - name: Install Android SDK command-line tools and components run: | export ANDROID_SDK_ROOT="$HOME/android-sdk" # If SDK already present (e.g., mounted from host or cached), skip install if [ -x "$ANDROID_SDK_ROOT/platform-tools/adb" ] || [ -x "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" ]; then echo "Found existing Android SDK at $ANDROID_SDK_ROOT -- skipping download/install." ls -la $ANDROID_SDK_ROOT || true exit 0 fi if command -v sudo >/dev/null 2>&1; then sudo apt-get update && sudo apt-get install -y unzip else apt-get update && apt-get install -y unzip fi mkdir -p $ANDROID_SDK_ROOT/cmdline-tools cd $ANDROID_SDK_ROOT # Allow overriding the download URL via environment variable (useful for mirrors) default_urls=( "https://dl.google.com/android/repository/commandlinetools-linux_latest.zip" "https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip" "https://dl.google.com/android/repository/commandlinetools-linux-8512546_latest.zip" "https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip" "https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip" ) urls=() if [ -n "$ANDROID_CMDLINE_TOOLS_URL" ]; then urls+=("$ANDROID_CMDLINE_TOOLS_URL") fi urls+=("${default_urls[@]}") downloaded=false for url in "${urls[@]}"; do echo "Trying $url" # Check existence (print server response if not found) if wget -q --spider "$url" 2>&1 | tee /dev/stderr | grep -q "HTTP/1.1 200\|HTTP/2 200"; then echo "Downloading $url" if wget --show-progress --progress=bar:force:noscroll:giga "$url" -O cmdline-tools.zip; then downloaded=true break fi else echo "URL not available or returned non-200: $url" echo "Server response:" wget -S --spider "$url" 2>&1 || true fi done if [ "$downloaded" != "true" ]; then echo "ERROR: Could not download Android command-line tools from known URLs." echo "Tried: ${urls[*]}" echo "If you are running this locally with 'act' or another restricted runner, ensure the runner has network access or set ANDROID_CMDLINE_TOOLS_URL to a reachable mirror." echo "Examples for local 'act' runs:" echo " - Pre-download commandlinetools zip and mount into the container as: -v /path/to/cmdline-tools.zip:", echo " and set ANDROID_SDK_ROOT to /github/home/android-sdk (or pass ANDROID_CMDLINE_TOOLS_URL to point to the mounted file)" echo " - Or set ANDROID_CMDLINE_TOOLS_URL to a working URL: e.g. export ANDROID_CMDLINE_TOOLS_URL=\"file:///github/home/cmdline-tools.zip\"" exit 8 fi unzip -q cmdline-tools.zip -d $ANDROID_SDK_ROOT/cmdline-tools # move the extracted folder into a 'latest' folder (sdkmanager expects this layout) if [ -d "$ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools" ]; then mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest || true else # Some zips extract a folder named 'cmdline-tools' already under different structure; try to normalize for d in $ANDROID_SDK_ROOT/cmdline-tools/*; do if [ -d "$d/bin" ]; then mv "$d" $ANDROID_SDK_ROOT/cmdline-tools/latest || true break fi done fi export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH # Install essential SDK components (adjust platform version/build-tools as needed) yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT "platform-tools" "platforms;android-33" "build-tools;33.0.2" yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --sdk_root=$ANDROID_SDK_ROOT --licenses || true - name: Add Android SDK to PATH run: | echo "$HOME/android-sdk/platform-tools" >> $GITEA_PATH echo "$HOME/android-sdk/cmdline-tools/latest/bin" >> $GITEA_PATH - name: Get dependencies run: flutter pub get - name: Build APK env: ANDROID_SDK_ROOT: $HOME/android-sdk ANDROID_HOME: $HOME/android-sdk JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 run: flutter build apk --release lint: runs-on: ubuntu-latest if: false steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Flutter (wget) run: | wget --show-progress --progress=bar:force:noscroll:giga https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.38.2-stable.tar.xz tar xf flutter_linux_3.38.2-stable.tar.xz git config --global --add safe.directory "$(pwd)/flutter" echo "$(pwd)/flutter/bin" >> $GITEA_PATH - name: Get dependencies run: flutter pub get - name: Analyze Formatting run: flutter analyze lib test test: runs-on: ubuntu-latest if: false steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Flutter (wget) run: | wget --show-progress --progress=bar:force:noscroll:giga https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.38.2-stable.tar.xz tar xf flutter_linux_3.38.2-stable.tar.xz git config --global --add safe.directory "$(pwd)/flutter" echo "$(pwd)/flutter/bin" >> $GITEA_PATH - name: Get dependencies run: flutter pub get - name: Run tests run: flutter test